带日期的 SQL 表

Posted

技术标签:

【中文标题】带日期的 SQL 表【英文标题】:SQL Table with Date 【发布时间】:2016-01-24 21:01:06 【问题描述】:

所以我正在创建一个 SQL 表:

create table Customer 
(customerID char(25) not null,
name char(50),
address char(25),
dateRegistered DATETIME(6),
noOfDvdHiring int(5),
primary key (customerID));

我收到以下错误:

ORA-00907: 缺少右括号

我认为这与 DATETIME 有关,这是显示日期的正确方法吗? (yyyy-mm-dd)

【问题讨论】:

ORA-00907: missing right parenthesis 听起来不像 mysql。你确定是 MySQL? 可能只是 Oracle SQL 这是一条 oracle 错误消息。 MySQL 无法生成 ORA-nnnnn 消息。 如果一切都失败了,请阅读手册:docs.oracle.com/database/121/SQLRF/… 实际上记录了有效的数据类型 【参考方案1】:

MySQL 5.6 - 工作正常

create table Customer 
(customerID char(25) not null,
name char(50),
address char(25),
dateRegistered DATETIME(6),
noOfDvdHiring int(5),
primary key (customerID));

SqlFiddleDemo

MySQL 5.5 - 不使用DATETIME(6)

create table Customer 
(customerID char(25) not null,
name char(50),
address char(25),
dateRegistered DATETIME,
noOfDvdHiring int(5),
primary key (customerID));

SqlFiddleDemo2

Oracle

create table Customer 
(customerID char(25) not null,
name char(50),
address char(25),
dateRegistered DATE,
noOfDvdHiring int,
primary key (customerID));

SqlFiddleDemo3

请记住,MySQLOracle 是不同的产品,它们支持不同的数据类型并且可能使用自己的语法。

【讨论】:

【参考方案2】:

(customerID 字符(25)

您应该改用 VARCHAR2CHAR 向右填充到定义的大小。浪费存储空间。

dateRegistered DATETIME(6)

DATETIME 不是 Oracle 中支持的数据类型。你可以使用:

日期 时间戳

DATE 可以存储高达秒的精度。要超越,请使用 TIMESTAMP,它是日期数据类型的扩展。

【讨论】:

以上是关于带日期的 SQL 表的主要内容,如果未能解决你的问题,请参考以下文章

SQL 按日期分组,但也获取不带记录的日期

sql 如何只截取日期数据的 时分秒 ?

带日期的 SQL IF 语句

sql 上次还原(带图像日期)

如何在sql中将带时区的varchar转换为日期时间

在 MS-Access 中插入带日期时间的 SQL 命令