我拥有number
格式YYYYMMDD
的Oracle数据库列。我没有成功地使用datediff
格式来获取两个日期之间的差异。我在线阅读的documentation使用了不同的格式:
DATEDIFF(day,'2008-06-05','2008-08-05')
根据Oracle提供的格式,我最好的方式是获得两个日期之间的天数?只要获得格式为datediff
的两个日期之间的天数,就可以接受不涉及YYYYMMDD
的答案。
答案 0 :(得分:3)
Oracle中的简单减法:
SELECT TO_DATE('20080805','YYYYMMDD') - TO_DATE('20080605','YYYYMMDD')
FROM DUAL;
答案 1 :(得分:1)
Oracle没有DATEDIFF()
功能。相反,您可以对Oracle日期使用简单算术,其中从另一个日期中减去一个日期会给出天数,并且您可以在此处添加从给定日期开始减去天数。 (您也可以减去天的分数,但这可能超出了这个答案的范围。)
要将格式NUMBER
的{{1}}日期转换为实际日期,只需使用YYYYMMDD
函数(我很确定Oracle会隐式转换TO_DATE()
值在转换为日期之前转换为NUMBER
;如果不是,请使用VARCHAR2
明确地执行此操作。
TO_CHAR()
要获得两个日期之间的差异,您可以执行以下操作:
TO_DATE(20150301, 'YYYYMMDD')
顺便提一下,如果您想获得间隔而不是天数,请转换为时间戳(使用SELECT TO_DATE(my_number_date1, 'YYYYMMDD') - TO_DATE(my_number_date2, 'YYYYMMDD')
FROM my_table;
),而不是转换为日期。