在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...