sysdate
為資料庫伺服器的當前系統時間。
to_char
是將日期型轉為字元型的函式。
to_date
是將字元型轉為日期型的函式,一般使用
yyyy-mm-dd hh24:mi:ss
格式,當沒有指定時間部分時,則預設時間為
00:00:00
dual
表為sys
使用者的表,這個表僅有一條記錄,可以用於計算一些表示式,如果有好事者用
sys
使用者登入系統,然後在
dual
表增加了記錄的話,那麼系統
99.999%
不能使用了。為什麼使用的時候不用
sys.dual
格式呢,因為
sys
已經為dual
表建立了所有使用者均可使用的別名。
一年的第一天
select to_date(to_char(sysdate,'yyyy')||'-01-01','yyyy-mm-dd'
) from dual
季度的第一天
select to_date(to_char(sysdate,'yyyy-')||lpad(floor(to_number(to_char(sysdate,'mm'))/3)*3+1,2,'0')||'-01', 'yyyy-mm-dd')from dual
floor
為向下取整
lpad
為向左使用指定的字元擴充字串,這個擴充字串至
2位,不足的補
'0'。
當天的半夜
select trunc(sysdate)+1-
1/24/60
/60from dual
trunc
是將sysdate
的時間部分截掉,即時間部分變成
00:00:00
oracle
中日期加減是按照天數進行的,所以
+1-1/24/60/60
使時間部分變成了
23:59:59
。oracle 8i
中僅支援時間到秒,
9i以上則支援到
1/100000000
秒。上個月的最後一天
select trunc(last_day(add_months(sysdate,-1)))+1-
1/24/60
/60from dual
add_months
是月份加減函式。
last_day
是求該月份的最後一天的函式。
本年的最後一天
select trunc(last_day(to_date(to_char(sysdate,'yyyy')||'-12-01','yyyy-mm-dd'))
)+1-
1/24/60
/60from dual
本月的最後一天
select trunc(last_day(sysdate))+1-
1/24/60
/60from dual
本月的第乙個星期一
select next_day(to_date(to_char(sysdate,'yyyy-mm')||'-01','yyyy-mm-dd'),
'星期一')from dual
next_day
為計算從指定日期開始的第乙個符合要求的日期,這裡的
'星期一
'將根據
nls_date_language
的設定稍有不同。
去掉時分秒
select trunc(sysdate)from dual
顯示星期幾
select to_char(sysdate,'day')from dual
取得某個月的天數
select trunc(last_day(sysdate))-to_date(to_char(sysdate,'yyyy-mm')||'-01','yyyy-mm-dd')+
1from dual
判斷是否閏年
select decode(
to_char(last_day(to_date(to_char(sysdate,'yyyy')||'-02-01','yyyy-mm-dd')),'dd'),
'28','
平年','閏年'
)from dual
乙個季度多少天
select last_day(to_date(to_char(sysdate,'yyyy-')||lpad(floor(to_number(to_char(sysdate,'mm'))/3)*3+3,2,'0')|| '-01','yyyy-mm-dd')) - to_date(to_char(sysdate,'yyyy-')||lpad(floor(to_number(to_char(sysdate,'mm'))/3)*3+1,2,'0')||'-01','yyyy-mm-dd') +1from dual
1、add_months()用於從乙個日期值增加或減少一些月份
sql> select add_months(sysdate,12) "next year" from dual;
2、current_date()返回當前會放時區中的當前日期
sql> select sessiontimezone,current_date from dual;
3、current_timestamp()以timestamp with time zone資料型別返回當前會放時區中的當前日期
4、dbtimezone()返回時區
varchar_value:=dbtimezone
sql> select dbtimezone from dual;
5、extract()找出日期或間隔值的字段值
sql> select extract(month from sysdate) "this month" from dual;
sql> select extract(year from add_months(sysdate,36)) "3 years out" from dual;
sql>
6、last_day()返回包含了日期引數的月份的最後一天的日期
date_value:=last_day(date_value)
sql> select last_day(date'
2000-02-01
') "leap yr?" from dual;
sql> select last_day(sysdate) "last day of this month" from dual;
sql>
7、localtimestamp()返回會話中的日期和時間
timestamp_value:=localtimestamp
sql> select localtimestamp from dual;
sql> select localtimestamp,current_timestamp from dual;
sql> select localtimestamp,to_char(sysdate,'dd-mm-yyyy hh:mi:ss am') "sysdate" sql>
8、months_between()判斷兩個日期之間的月份數量
number_value:=months_between(date_value,date_value)
sql> select months_between(sysdate,date'
1971-05-18
') from dual;
sql> select months_between(sysdate,date'
2001-01-01
') from dual;
9、next_day()給定乙個日期值,返回由第二個引數指出的日子第一次出現在的日期值(應返回相應日子的名稱字串)
oracle日期計算
取當前小時,以及相隔一小時 v begin date to date to char sysdate,yyyy mm dd hh24 yyyy mm dd hh24 v end date v begin date 1 24 執行結果 v begin date 2013 9 12 上午 09 00 0...
oracle日期加減計算
oracle資料庫中有多種對日期加減的計算方法,廢話不多說,開始。1 直接加減。1 求當前時間及一天後 select sysdate,sysdate 1 from dual 輸出為 2018 1 24 14 05 19 2018 1 25 14 05 19 2 求當前時間及一小時後 select s...
oracle 日期加減計算
下一年 年加1 select sysdate,sysdate numtoyminterval 1,year from dual select sysdate,add months sysdate,12 from dual 上一年 年減1 select sysdate,sysdate numtoymi...