Oracle SQL(SQL Developer)中两个TO_DATE转换结果是否相同?
验证TO_DATE('01/01/2016 00:00:00','MM/DD/YYYY HH24:MI:SS')与TO_DATE('01/01/2016','MM/DD/YYYY')是否等价
这两个表达式在Oracle中完全等价,都会返回代表2016年1月1日00:00:00的DATE类型值。
原因说明
Oracle的DATE类型本身包含年、月、日、时、分、秒完整时间信息。当使用TO_DATE函数仅指定年月日格式时,Oracle会自动将时分秒部分默认填充为00:00:00,和显式指定时分秒为00:00:00的结果完全一致。
验证SQL示例
在Oracle SQL Developer中执行以下查询可直接验证:
-- 直接比较两个日期是否相等 SELECT CASE WHEN TO_DATE('01/01/2016 00:00:00','MM/DD/YYYY HH24:MI:SS') = TO_DATE('01/01/2016','MM/DD/YYYY') THEN '等价' ELSE '不等价' END AS 验证结果 FROM DUAL;
执行结果会返回等价,证明两者相等。
也可以通过格式化输出查看完整时间信息:
-- 格式化显示两个日期的完整时间 SELECT TO_CHAR(TO_DATE('01/01/2016 00:00:00','MM/DD/YYYY HH24:MI:SS'), 'MM/DD/YYYY HH24:MI:SS') AS 显式指定时分秒, TO_CHAR(TO_DATE('01/01/2016','MM/DD/YYYY'), 'MM/DD/YYYY HH24:MI:SS') AS 默认时分秒 FROM DUAL;
输出结果中两个字段的值均为01/01/2016 00:00:00,直观验证时间部分完全一致。
内容的提问来源于stack exchange,提问作者user24472185
相关产品推荐
相关产品推荐

