我正在尝试运行查询并想要验证我正在使用的日期条件。 TO_DATE('01/01/2016 00:00:00','MM/DD/YYYY HH24:MI:SS') 与 TO_DATE('01/01/2016','MM/DD/YYYY') 相同?这将是我试图验证的开始日期。我在 sql Developer 中使用 oracle sql。
谢谢
默认时间为中午 12:00:00 (午夜)。
默认时间适用于列中没有时间部分的任何值,因为未指定时间部分或因为值被截断。
这种措辞令人困惑,因为 DATE 值始终包含日期和时间部分,即使您的客户端没有显示它们。但该部分中的示例显示了您真正要问的内容,使用- 默认日期适用于列中没有日期部分的任何值,因为未指定任何日期部分。
默认日期是当月的第一天。
to_date()
而不指定所有元素。
因此,TO_DATE('01/01/2016 00:00:00','MM/DD/YYYY HH24:MI:SS')
和
TO_DATE('01/01/2016','MM/DD/YYYY')
都代表相同的DATE值。您可以通过显示两者的完整值,或者使用 dump()
来查看内部表示是相同的:alter session set nls_date_format = 'SYYYY-MM-DD HH24:MI:SS'
select TO_DATE('01/01/2016 00:00:00','MM/DD/YYYY HH24:MI:SS'),
dump(TO_DATE('01/01/2016 00:00:00','MM/DD/YYYY HH24:MI:SS'), 1016)
from dual;
转储(TO_DATE('01/01/201600:00:00','MM/DD/YYYYHH24:MI:SS'),1016) | |
---|---|
Typ=13 Len=8: e0,7,1,1,0,0,0,0 |
select TO_DATE('01/01/2016','MM/DD/YYYY'),
dump(TO_DATE('01/01/2016','MM/DD/YYYY'), 1016)
from dual;
转储(TO_DATE('01/01/2016','MM/DD/YYYY'),1016) | |
---|---|
Typ=13 Len=8: e0,7,1,1,0,0,0,0 |
date '2016-01-01
,或者如果您需要指定时间,则将时间戳文字转换为日期,如
cast(timestamp '2016-01-01 00:00:00' as date
。它们也代表相同的日期值 - fiddle。