gpt4 book ai didi

sql - TO_DATE 为不同的格式掩码返回不同的日期?

转载 作者:行者123 更新时间:2023-12-02 00:52:06 25 4
gpt4 key购买 nike

我正在查询以下sql。请帮我。

 select to_date(sysdate, 'DD MONTH YYYY') , to_date(sysdate, 'yyyy/mm/dd hh24:mi:ss')
from dual where
to_date(sysdate, 'DD MONTH YYYY') < to_date(sysdate, 'yyyy/mm/dd');

1) to_date(sysdate, 'DD MONTH YYYY') 这将给出没有时间的 Date 对象(可能时间是 00:00)。
我说得对吗?如果不是,我将如何获得没有时间的日期对象?
2)从上面的查询看来,to_date(sysdate,'yyyy/mm/dd')大于to_date(sysdate,'DD MONTH YYYY')。为什么??



更新

<小时/>

1) 我在上面的 URL 中的目的是找出 to_date 函数只会返回日期(或连同时间),尽管格式“DD MONTH YYYY”没有提及其中的时间字符(hh:mm..)。
2)从响应中我得到 to_date 将始终返回带有时间的日期,尽管我们没有提到时间字符。
3) 最后,为了只获取 DATE,我们应该使用 trunc()/to_date(to_char(sysdate,'mm-dd-yyyy'),'mm-dd-yyyy')

检查以下内容

select to_char(trunc(sysdate), 'yyyy/mm/dd hh24:mi:ss'), 
to_char(to_date(to_char(sysdate, 'yyyy-MM-dd'),'yyyy/mm/dd hh24:mi:ss'),'yyyy/mm/dd hh24:mi:ss')
from dual;

-->hh24 :24 对于获取 00:00 格式很重要。

最佳答案

你简直是搬起石头砸自己的脚。它称为隐式数据类型转换。

没有 TO_DATE(date) (这就是您所要求的),因此 Oracle 已将您的查询转换为 TO_DATE(TO_CHAR(sysdate), 'DD MONTH YYYY' ) 其中 TO_CHAR(sysdate) 将选取默认的 NLS 格式掩码。根据您的默认掩码(请参阅 NLS_SESSION_PARAMETERS),您的第一个可能已解析为年份 0012,第二个可能已解析为年份 0018。因此 0012 小于 0018。

如果你想截断sysdate,那么只需执行trunc(sysdate)

关于sql - TO_DATE 为不同的格式掩码返回不同的日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13934111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com