最近要計算日期間隔天數,測試發現幾個問題,剛開始搜網友的,有些不太靠譜。
1、首先日期不能相加。
2、如果要相減,最好去掉時分秒,格式化成年月日,直接相減的話得到的是小數,日期相減底層應該是操作的毫秒級,都帶時分秒的,這樣算天數的時候會精確到時分秒算,特別是用了sysdate,上午和下午執行的天數結果是不一樣的。建議用trunc格式一下。
關於round和trunc函式,round會四捨五入,已中午12點為判斷;trunc只擷取當天。(第二個引數都是預設情況下)比如:
select round(to_date('2019-04-12 11:23:33','yyyy-mm-dd hh24:mi:ss')) from dual
2019-04-12 00:00:00
select round(to_date('2019-04-12 12:23:33','yyyy-mm-dd hh24:mi:ss')) from dual
2019-04-13 00:00:00
select round(to_date('2019-04-14 13:23:33','yyyy-mm-dd hh24:mi:ss'))-round(to_date('2019-04-12 10:23:33','yyyy-mm-dd hh24:mi:ss')) num from dual
3
select trunc(to_date('2019-04-12 11:23:33','yyyy-mm-dd hh24:mi:ss')) from dual;
2019-04-12 00:00:00
select trunc(to_date('2019-04-12 12:23:33','yyyy-mm-dd hh24:mi:ss')) from dual;
2019-04-12 00:00:00
select trunc(to_date('2019-04-14 13:23:33','yyyy-mm-dd hh24:mi:ss'))-round(to_date('2019-04-12 10:23:33','yyyy-mm-dd hh24:mi:ss')) num from dual;
2
PHP程式設計計算日期間隔天數的方法
剛開始在沒有查php手冊的情況下,用比較老套方法也折騰出來了,是這樣子實現的 date 1 date y m d date 2 2012 07 16 date1 arr explode date 1 date2 arr explode date 2 day1 mktime 0,0,0,date1 a...
C語言計算日期間隔天數的經典演算法解析
網上看到乙個計算日期間隔的方法,很高深,很巧妙。如下 include include int day diff int year start,int month start,int day start int year end,int month end,int day end int main v...
java中計算日期間隔
專案需要計算乙個日期列表內所有漏掉的日期,因此,需要能判定 1.日期是否連續的 2.日期相差的天數 以上兩個問題,可以看做乙個,計算兩個日期相差的天數,計算方法如下 判斷日期2與日期1相差的天數 param d1 param d2 return public static long betweend...