Oracle的trunc函數意為保持精度,如精度說明符缺失則精度保證到日,小於日的時分秒都不要了。
比如現在是21年10月11日21時31分,trunc之后,就只剩21年10月11日0時0分0秒了。
看下面的例子就更明白了:
SQL> select to_char(sysdate-1,'yyyy-MM-dd hh24:mi:ss') as d from dual; D -------------------------------------- 2021-10-10 21:26:40
由上可以看出,sysdate-1的效果是返回24小時之前的時間,時分秒都還保持原值。
而下面的例子:
SQL> select to_char(trunc(sysdate-1),'yyyy-MM-dd hh24:mi:ss') as d from dual; D -------------------------------------- 2021-10-10 00:00:00
有上可以看出,時分秒都沒了。
最終,我們可以得出結論如下:
trunc(sysdate-1) 是指昨天剛開始的時間,前天剛過去,昨天剛到來那一刻;
sysdate-1就是24小時前,現在是晚上,那么sysdate-1還是晚上,連分鍾秒鍾都一樣。
就這么簡單明了。
END