1. 程式人生 > 其它 >八種資料庫時間函式的簡單總結

八種資料庫時間函式的簡單總結

八種資料庫時間函式的簡單總結

PG,SQLSERVER,Oracle,MySQL,達夢,神通,人大金倉,瀚高.

簡單總結一下

1. PG,神通,人大金倉,瀚高 基本上一樣:
都可以使用now()獲取時間 age獲取時間間隔(神通是天數,其他的年月數),extract獲取時間資料的部分內容.
使用 + 或者是 -  interval '3 days' 表示三天後或者是三天前或者是其他時間單位的時間數值.
2. Oracle資料庫和達夢資料庫基本上一樣:
使用 select sysdate from dual 可以獲取當前時間
使用 也可以使用 + 或者是 - interval '數字' 單位(單數形式) from dual 來獲取

注意1: 這兩類存在較大的不同是 PG系可以使用複數形式,並且需要放到hard quote 裡面 Oracle 只需要將數字放到單引號. 日期型別必須單數. 
注意2: oracle必須有from 達夢可以有 from dual 也可以沒有. 

3. SQLSERVER 資料庫自稱一派, 使用 select getdate()的方式獲取日期. dateadd和datediff函式進行時間計算. 
4. Mysql資料庫比較偏向於PG資料庫.  但是需要注意的是 他有 date_add 函式 還有 dayofyear dayofmonth等的函式.

1. PG資料庫

獲取當前時間 
now()
select now() ;
其他函式
# 時間戳
 select current_timestamp;
# 日期 
 select current_date;
# 時間
 select current_time;

1. PG資料庫

# 時間計算
select now() + interval '2 years'; 
select now() - interval '2Y'; 
# 部分簡寫以及含義
Y	Years
M	Months (in the date part)
W	Weeks
D	Days
H	Hours
M	Minutes (in the time part)
S	Seconds
# 時間間隔
age
select age(timestamp '2013-11-27');   
# 時間擷取
extract
select extract(doy from now());
# 注意是 day of year 的簡寫
select extract(week from now());
select extract(month from now());

2. SQLSERVER資料庫

# 獲取當前時間
select getdate()
# 時間計算
dateadd(datepart,number,date)
select dateadd(year,-2,getdate())
# 時間差值計算
datediff( date-part, startdate, enddate )
# 比如計算有從出生有多少天
select datediff( day,  '2013-11-27',getdate() )
# 獲取部分時間內容
# datepart
SELECT DATEPART(Second, getdate()) as '秒數'

3. Oracle資料庫

# 注意 oracle的時間函式裡面 沒有括號 真TM亂啊
# 注意 Oracle 必須從虛標裡面查. NND真特殊.
# 獲取當前時間
select sysdate from dual
# 設定時間格式
select to_char(sysdate,'yyyy-mm-dd hh24:mi') from dual;
# 也可以僅獲取部分內容
select to_char(sysdate,'hh24') from dual;
# 時間計算
# 獲取七天後的日期
# 注意 這一點 oracle與PG的計算時間前後的函式是一樣的. 
select sysdate,sysdate +  interval '7' DAY from dual;

4. 達夢資料庫

# 獲取當前時間
SELECT sysdate()
# 注意達夢為了實現oracle相容也可以使用 oracle的語法進行處理
select sysdate from dual
# 而且他還可以帶括號
select sysdate() from dual
# 他的可以完全模仿Oracle來處理
# 設定時間格式
select to_char(sysdate,'yyyy-mm-dd hh24:mi') from dual;
# 也可以僅獲取部分內容
select to_char(sysdate,'hh24') from dual;
# 時間計算
# 獲取七天後的日期
# 注意 這一點 oracle與PG的計算時間前後的函式是一樣的. 
select sysdate,sysdate +  interval '7' DAY from dual;
# 其他的先不管了...

5. MySQL資料庫

# 獲取當前時間
select now();
# 還可以用如下的函式
 current_timestamp(),current_timestamp,localtime(),localtime
# 跟PG一樣 用 now獲取 
# 還有另外一個函式 sysdate 但是存在區別
#sysdate() 日期時間函式跟 now() 類似,不同之處在於:
#now() 在執行開始時值就得到了,sysdate() 在函式執行時動態得到值。
select now(), sleep(1), now();
select sysdate(), sleep(1), sysdate();
# 注意秒數 是不一樣的.
# 只獲取當前日期
select curdate();
# 只獲取當前時間
select curtime();
# 獲取時間的部分內容
select extract(month from sysdate())
# 這個函式跟PG的是一樣的.

5. MySQL資料庫

# 獲取時間是本週/本月/本年的天數
select dayofweek(sysdate());  
select dayofmonth(sysdate());  
select dayofyear(sysdate());  
# MySQL 返回星期和月份名稱函式:dayname(), monthname() 
select dayname(sysdate())
select monthname(sysdate())
# 注意西方世界 Sunday 是First day of The week.
# MySQL其他的時間計算函式
date_add
select date_add(sysdate(),interval -3 year)
# 注意這裡面沒有複數形式.
# 計算時間差值
select datediff('2013-11-27',sysdate())
# 這個出來是負數.

6. 神通資料庫

# 懷疑神通資料庫的函式和核心比較偏向於PG.
# 獲取當前時間
select now();
# 驗證了一下果然和PG很相似基本通用.
# 時間計算
select now() + interval '2 years'; 
select now() - interval '2Y'; 
# 時間間隔
age
select age(timestamp '2013-11-27');   
# 時間擷取
extract
select extract(doy from now());
# 注意是 day of year 的簡寫
select extract(week from now());
select extract(month from now());

7. 人大金倉資料庫

#發現跟神通資料庫一樣 時間函式和PG也是相同的
select now();
# 驗證了一下果然和PG很相似基本通用.
# 時間計算
select now() + interval '2 years'; 
select now() - interval '2Y'; 
# 部分簡寫以及含義
# 時間間隔
age
select age(timestamp '2013-11-27');   
# 時間擷取
extract
select extract(doy from now());
# 注意是 day of year 的簡寫
select extract(week from now());
select extract(month from now());

8.瀚高資料庫

# 與PG資料庫基本一致..