【发布时间】:2015-04-23 17:21:13
【问题描述】:
在Oracle SQL中,我读到默认日期格式是'YYYY-MON-DD'
但是,当我运行这个查询时:
SELECT TO_CHAR
(SYSDATE) "NOW"
FROM DUAL;
它返回:
23-APR-15
不过,我期待像“2015-APR-23”这样的东西..
这是为什么呢?谢谢
【问题讨论】:
在Oracle SQL中,我读到默认日期格式是'YYYY-MON-DD'
但是,当我运行这个查询时:
SELECT TO_CHAR
(SYSDATE) "NOW"
FROM DUAL;
它返回:
23-APR-15
不过,我期待像“2015-APR-23”这样的东西..
这是为什么呢?谢谢
【问题讨论】:
默认日期格式是会话的nls_date_format 指定的任何格式。但是,您永远不应该编写依赖于会话 nls_date_format 的代码,因为这取决于用户的偏好、他们的国家和地区等。您应该使用显式转换和/或日期文字(日期 'yyyy- mm-dd') 在您的代码中,而不是依赖于隐式转换。如果您关心返回的字符串的格式,则需要在 to_char 调用中提供显式格式掩码。
您会话的nls_date_format 似乎是DD-MON-RR,这是英语安装的常见默认值。其他人的默认值可能是YYYY-MON-DD。其他人可能还有另一个默认值。
【讨论】: