在oracle中,我覺得最讓人頭疼的就是操作date型的資料了,比如取年月日、計算幾天前、幾年前、幾個月前什麼的。但是這個又用得很多,因為不管你做什麼內容的挖掘,總是離不開時間視窗的,因為資料大多是以人為本的,而人又是善變的,所以時間是你必須非常看重的。
1、oracle中分別取年、月、日的方法
--取年份
select to_number(to_char(sysdate,'yyyy')) from dual
select extract (year
from sysdate) from dual
--取月份
select to_number(to_char(sysdate,'mm')) from dual
select extract (month
from sysdate) from dual
--取日期
select to_number(to_char(sysdate,'dd')) from dual
select extract (day
from sysdate) from dual
2、oracle中取日、月的方法
--如果字段本身就是date型
select to_char(sysdate,'yyyy-mm') from dual
--如果字段本身不是date型
select to_char(to_date(datechar,'yyyy-mm'),'yyyy-mm') from dual
--也可以用substr方法了,引數4表示從哪個字元開始擷取,10表示擷取多少個字元
select substr(to_char(sysdate,'yyyy-mm-dd'),4,6) from dual
以上這種方法雖然很簡單粗暴,但親測有效,而且可以比較大小,請看下方**
3、oracle中日、月比較大小
--如果字段本身就是date型
to_char(date,'yyyy-mm')<=to_char(sysdate,'yyyy-mm')
--如果字段本身不是date型
to_char(to_date(date,』yyyy-mm』),'yyyy-mm')<=to_char(to_date(datechar),'yyyy-mm')
可以這樣做的原因是:oracle能夠在同型別間預設轉換為數字,並進行大小的比較,你要是不放心,也可以換成數字或者時間戳試試。 Sql獲取周 月 年的首尾時間。
select dateadd ww,datediff ww,0,getdate 0 本週周一 select dateadd dd,1,dateadd ww,datediff ww,0,getdate 1,0 本週週末 select dateadd mm,datediff mm,0,getdate 0...
Java Calendar獲取時間的月和日 周
calendar cal calendar.getinstance 當前年 int year cal.get calendar.year 當前月 int month cal.get calendar.month 1 當前月的第幾天 即當前日 int day of month cal.get cale...
根據指定日期獲取周,月,年的開始和結束時間
獲取本週的第一天日期和最後一天日期 按中國周 param todaytime 2017 03 15 return arr 0 第一天日期 arr 1 最後一天日期 throws parseexception public static string getweekstartandenddate st...