SQL語句中關於日期的操作 非常的有用

2022-02-23 13:33:21 字數 1613 閱讀 6373

在sql server 裡的日期資料,我們經常可以用 字段<=』2008-5-20』這樣的表示式,但在oracle卻不可以,因為資料型別不一樣 欄位是date型,』2008-5-20』是字元型,需要用to_char 或者to_number轉換成相同的型別才能進行比較。

剛開始這讓我覺得不習慣,覺得不好,不過時間長了,覺得也有不少便利之處,尤其是配合trunc啊,to_char之類的,下面簡單寫一下常用的一些對日期的操作

獲取當前的日期 :  select trunc(sysdate) from dual   結果:2013-10-23 00:00:00

獲取當年的第一天:select trunc(sysdate,'yyyy') from dual   結果:2013-1-1 00:00:00

獲取當月的第一天:select trunc(sysdate,'mm')  from dual  結果:2013-10-01 00:00:00

取當前時間秒部分:select to_char(sysdate,』ss』) from dual     顯示當前的秒

獲取當前秒小時部分:select to_char(sysdate,'hh24') from dual  顯示當前的小時

獲取當前的日期部分:select to_char(sysdate,'dd') from dual

select to_char(sysdate,'mm') from dual

select to_char(sysdate,'yyyy') from dual

獲取當前是本月第幾周:select to_char(sysdate,'w') from dual

獲取當前時間是本年第幾周:select to_char(sysdate,'ww') from dual  (從1.1開始算)

取當前時間是本年第幾周:select to_char(sysdate,'iw') from dual  (按實際日曆的)

取當前時間是一周的第幾天,從星期天開始,週六結束  select to_char(sysdate,』d』) from dual

取當前日是星期幾,和資料庫設定的字符集有關,會輸出』tuesday』:select to_char(sysdate,'day') from dual 

當前日是一年中的第幾天:select to_char(sysdate,'ddd') from dual

取一年後的今天  select add_months(sysdate,12) from dual

取兩個日期之間的天數 select sysdate-(sysdate-100) from dual

取兩個日期之間的分鐘數 select (sysdate-(sysdate-100))*1440 from dual 

取兩個日期之間的秒數 select (sysdate-(sysdate-100))*1440*60 from dual 

取兩個日期間隔的月份 select months_between(sysdate,sysdate-100) from dual 

取當前月的最後天 select last_day(sysdate) from dual

取當前日之後第乙個星期天,裡面的』1』表示取星期日,如果今天正好是星期日,則會顯示下乙個星期日 select next_day(sysdate,』1』) from dual 

sql語句中關於like的使用

今天在專案中有個新的需求 當我傳引數的時候,傳入的引數為空的時候,查詢所有資料。當傳入引數不為空的時候,按照輸入的引數查詢條件進行查詢。這個時候自己本來想著decode函式,後來經歷教使用like用法,模糊查詢 select b.select count 1 from options a where...

關於sql語句中limit的坑

在使用分頁查詢時遇到了這樣這個思維錯誤,如下 string sql select from topic where c id and delete 0 order by update time desc limit 這裡同時有條件和限制,我本以為先條件查詢,也就是先執行了 where c id an...

sql 語句中可以並行的操作

並不是所有的sql operations都是可並行化的 不少人認為sort merge join這種排序合併操作是不能並行化的,這顯示是一種錯誤的認識。有了這樣乙個列表你就可以更好地理解oracle中的parallel execution了 parallel query table scan nes...