2
我正在开发的程序需要开始日期和结束日期,并为年,月和日返回单独的值。每个类别都有自己的代码段,这是我一直使用的,迄今为止它一直是半精确的,直到几天(有时甚至是几个月。我甚至不想在这一点上蠢蠢欲动)计算年,月,日在oracle中
Ex Start:04/10/2000 End:04/10/2006应该给我6年0个月零0天。
年代号:
SELECT
trunc(months_between((to_date(:main_DT_DateEnd1,'MM/DD/YYYY')),(to_date(:main_DT_DateBeg1,'MM/DD/YYYY')))/12) as "Years1"
FROM dual
月代码:
SELECT
trunc(mod(months_between((to_date(:main_DT_DateEnd1,'MM/DD/YYYY')),(to_date(:main_DT_DateBeg1,'MM/DD/YYYY'))), 12)) as "Months1"
FROM dual
天代码:我已经试过的这些多个版本,而不例如很成功,我可以计算出日之间的总天数,但既然有在某些日子里不同的月份会变得更加麻烦。这是我得到的最接近的地方,如果天数相同,则不需要计算,否则使用子串来减去它们。 1)
SELECT
CASE
WHEN substr((to_date(:main_DT_DateBeg1,'MM/DD/YYYY')),4,5) = substr((to_date(:main_DT_DateEnd1,'MM/DD/YYYY')),4,5)
THEN 0
WHEN substr((to_date(:main_DT_DateBeg1,'MM/DD/YYYY')),4,5) < substr((to_date(:main_DT_DateEnd1,'MM/DD/YYYY')),4,5)
THEN to_number(substr((to_date(:main_DT_DateEnd1,'MM/DD/YYYY')),4,5)) - to_number(substr((to_date(:main_DT_DateBeg1,'MM/DD/YYYY')),4,5))
END as "Days_1"
FROM dual
感谢您的时间,对于那些你想知道这是一个工作经验计算器:)
我问过同样的问题http://stackoverflow.com/questions/11500098/get-the-在两个日期之间的差异,在两个月和天在SQL中,并得到很好的答案 – ErrorNotFoundException 2014-09-24 13:52:40
这是否帮助https://community.oracle.com/thread/826651?start=0&tstart=0 – 2014-09-24 13:52:58
我会看看这个斯坦利我有一个类似的答案,使用不同的月份格式(也许这就是区别),谢谢lalit我也会考虑这一个。我在该帖子中尝试了6篇帖子,并且确实关闭了。感谢你目前的帮助! – 2014-09-24 14:12:17