Sql Oracle希望'DATE'值采用什么格式?
我使用Oracle的SQL model developer中的关系模型创建此表:Sql Oracle希望'DATE'值采用什么格式?,sql,oracle,oracle-sqldeveloper,Sql,Oracle,Oracle Sqldeveloper,我使用Oracle的SQL model developer中的关系模型创建此表: CREATE TABLE Orders ( OrderNum INTEGER NOT NULL , OrderDate DATE , TIME DATE , Employee_EMP_CODE VARCHAR2 (10) NOT NULL ,
CREATE TABLE Orders
(
OrderNum INTEGER NOT NULL ,
OrderDate DATE ,
TIME DATE ,
Employee_EMP_CODE VARCHAR2 (10) NOT NULL ,
Tax_Id VARCHAR2 (10) ,
Tax_Rate VARCHAR2 (10) ,
Customers_Customer_No INTEGER NOT NULL ,
Consoles_Console_NO VARCHAR2 (10) NOT NULL ,
Customers_Buyer_First_Name VARCHAR2 (10) NOT NULL ,
Customers_Buyer_Last_Name VARCHAR2 (10) NOT NULL ,
Comments VARCHAR2 (250)
) ;
由于某些原因,当我尝试插入一行时,它不会占用时间值。我试过这些格式
'12:31:00'
'12.31.00'
它一直给我一个错误,月值无效 Oracle
date
列始终包含日期和时间组件。将两列OrderDate
和Time
同时作为date
类型是没有意义的。您的OrderDate
将有一个时间组件,而time
将有一个日期组件。实际上,您只需要一个类型为date
的列,该列同时包含下订单的日期和时间
如果您试图将数据插入日期
列,您可能希望从客户端应用程序传递正确的数据类型(即,在创建插入
语句时,在客户端应用程序中绑定日期
)或者,您可能希望使用to_date
函数从字符串进行显式转换。比如说
INSERT INTO Orders( OrderNum, OrderDate, <<more columns>> )
VALUES( 1, to_date( '2014-07-12 12:31:00', 'YYYY-MM-DD HH24:MI:SS' ), <<more values>> );
插入订单(OrderNum,OrderDate,)
数值(1,截止日期('2014-07-12 12:31:00','YYYY-MM-DD HH24:MI:SS');
回答您的问题“Oracle希望日期值采用什么格式?”
您可以查看您的NLS\u日期\u格式:
SQL>显示NLS\u日期\u格式
假设您使用的是Default,那么它应该返回类似于:DD-MON-RR的内容
实际上,您可以插入或选择以下内容,而不选择截止日期:
从OrderDate='25-DEC-04'的订单中选择*
回答您真正的问题:我应该如何存储我的订单日期:)
您似乎在两个单独的字段中存储订单日期和订单时间。
实际上没有必要这样做,因为这意味着您的数据字段将使用两倍的磁盘空间,实际上您只需要一个字段
由于DATE数据类型将同时存储日期和时间,所以实际上您可以只使用1个字段,这将使您在尝试选择数据时更加轻松
您真的应该在下订单时考虑使用sysdate。
即:
另外请注意,我使用TO_CHAR仅用于打印目的。
插入时,您只需执行以下操作:
在订单(OrderDate,其他字段)中插入值(sysdate,其他字段)
我希望这能有所帮助。甲骨文在涉及最新内容时非常烦人。但是,我很幸运地使用了这种格式:
{ts 'yyyy-mm-dd HH:mi:ss'}
年、月、日、时、分、秒。如果合适,请使用前导零。使用24小时制。您在
OrderDate
和/或TIME
列中具体输入了什么?看起来你的意思是TIME
属于TIME
类型,而不是DATE
我让关系建模师为我创建了DDL,这就是它给我的。我是否应该将时间列更改为时间而不是日期?在时间
列中,您是否仅尝试存储时间(而不是日期的任何元素)?如果是,请参见它表示下订单的时间,因此与您的问题无关,但将客户
和订单
信息合并到同一个表中会违反规范化。有单独的customer
和orders
表,并将orders
中的CustomerNum
定义为customers
表的外键,这将更有意义。感谢Justin,这是一个家庭作业,我们必须在其中开发和ERD然后是关系模型。我们必须根据摩托车店的三张发票来计算,但这就是我们所要做的。我想我会把它改成varchar2然后见鬼去吧。在这些董事会上,我认为现实世界中的人们不会像他教我们的那样做事。@user3786519-我强烈建议你不要使用varchar2
列来存储日期。使用实际日期列。正确,谢谢。我有一个日期类型的月份部分,这对于这个任务来说是重要的部分。老实说,他甚至从来没有告诉我们如何使用日期类型,所以我不确定他期望的是什么。@user3786519-这没有道理。正如我所说,日期总是有日期和时间。如果没有其他内容,就不能有“日期类型中的月份部分”。现在,您可以说您有一个日期
,其中日期始终是一个月的第一天,时间部分始终是午夜。但是,将这些额外的数据存储在另一列中是没有意义的。
{ts 'yyyy-mm-dd HH:mi:ss'}