1. 程式人生 > >Oracle和Sql 日期格式與字串格式相互轉換

Oracle和Sql 日期格式與字串格式相互轉換

日期格式轉換為字元型別

Oracle 型別日期格式轉換字串型別

1.date 轉換為 字串

to_char(日期,”轉換格式” ) 即把給定的日期按照“轉換格式”轉換。
轉換的格式:

表示year的:y 表示年的最後一位 yy 表示年的最後2位 yyy 表示年的最後3位 yyyy 用4位數表示年

表示month的:mm 用2位數字表示月;mon 用簡寫形式 比如11月或者nov ;month 用全稱 比如11月或者november

表示day的:dd 表示當月第幾天;ddd表示當年第幾天;dy 當週第幾天 簡寫 比如星期五或者fri;day當週第幾天 全寫

比如星期五或者friday。

表示hour的:hh 2位數表示小時 12進位制; hh24 2位數表示小時 24小時

表示minute的:mi 2位數表示分鐘

表示second的:ss 2位數表示秒 60進位制

表示季度的:q 一位數 表示季度 (1-4)

另外還有ww 用來表示當年第幾周 w用來表示當月第幾周。

24小時制下的時間範圍:00:00:00-23:59:59

12小時制下的時間範圍:1:00:00-12:59:59
比如:

select to_char(sysdate,’yy-mm-dd hh24:mi:ss’) from dual //顯示:08-11-07 13:22:42

select to_date(‘2005-12-25,13:25:59’,’yyyy-mm-dd,hh24:mi:ss’) from dual //顯示:2005-12-25 13:25:59

而如果把上式寫作:select to_date(‘2005-12-25,13:25:59’,’yyyy-mm-dd,hh:mi:ss’) from dual,則會報錯,因為小時hh是12進位制,13為非法輸入,不能匹配。

補充:

當前時間減去7分鐘的時間
select sysdate,sysdate - interval ‘7’ MINUTE from dual
當前時間減去7小時的時間
select sysdate - interval ‘7’ hour from dual
當前時間減去7天的時間
select sysdate - interval ’7’ day from dual
當前時間減去7月的時間
select sysdate,sysdate - interval ‘7’ month from dual
當前時間減去7年的時間
select sysdate,sysdate - interval ‘7’ year from dual
時間間隔乘以一個數字
select sysdate,sysdate - 8*interval ‘7’ hour from dual

Dual偽列

含義解釋:

Dual 是 Oracle中的一個實際存在的表,任何使用者均可讀取,常用在沒有目標表的select語句塊中。

比如,我要獲得系統時間,則用“select sysdate from dual” 則返回系統當前的時間:2008-11-07 9:32:49,不同系統可能返回日期的格式不一樣。”select user from dual”則返回當前連線的使用者。如果是”select 1+2 from dual”,則返回結果:3

2 字串轉為日期格式

to_date(“要轉換的字串”,”轉換的格式”) 兩個引數的格式必須匹配,否則會報錯。

字元轉換為 timestamp

to_timestamp(“轉換的字串”,’yyyy-mm-dd hh24:mi:ss.ff’)

SQL日期格式轉換為字串

一、sql server日期時間函式
Sql Server中的日期與時間函式
1. 當前系統日期、時間
select getdate()

  1. dateadd 在向指定日期加上一段時間的基礎上,返回新的 datetime 值
    例如:向日期加上2天
    select dateadd(day,2,’2004-10-15’) –返回:2004-10-17 00:00:00.000

  2. datediff 返回跨兩個指定日期的日期和時間邊界數。
    select datediff(day,’2004-09-01’,’2004-09-18’) –返回:17

  3. datepart 返回代表指定日期的指定日期部分的整數。
    select DATEPART(month, ‘2004-10-15’) –返回 10

  4. datename 返回代表指定日期的指定日期部分的字串
    select datename(weekday, ‘2004-10-15’) –返回:星期五

  5. day(), month(),year() –可以與datepart對照一下

select 當前日期=convert(varchar(10),getdate(),120)
,當前時間=convert(varchar(8),getdate(),114)

select datename(dw,’2004-10-15’)

select 本年第多少周=datename(week,’2004-10-15’)
,今天是周幾=datename(weekday,’2004-10-15’)

二、日期格式轉換

Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 1): 05/16/06
Select CONVERT(varchar(100), GETDATE(), 2): 06.05.16
Select CONVERT(varchar(100), GETDATE(), 3): 16/05/06
Select CONVERT(varchar(100), GETDATE(), 4): 16.05.06
Select CONVERT(varchar(100), GETDATE(), 5): 16-05-06
Select CONVERT(varchar(100), GETDATE(), 6): 16 05 06
Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 06
Select CONVERT(varchar(100), GETDATE(), 8): 10:57:46
Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM
Select CONVERT(varchar(100), GETDATE(), 10): 05-16-06
Select CONVERT(varchar(100), GETDATE(), 11): 06/05/16
Select CONVERT(varchar(100), GETDATE(), 12): 060516
Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:937
Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:967
Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:47
Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.157
Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM
Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-16
Select CONVERT(varchar(100), GETDATE(), 24): 10:57:47
Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.250
Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM
Select CONVERT(varchar(100), GETDATE(), 101): 05/16/2006
Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.16
Select CONVERT(varchar(100), GETDATE(), 103): 16/05/2006
Select CONVERT(varchar(100), GETDATE(), 104): 16.05.2006
Select CONVERT(varchar(100), GETDATE(), 105): 16-05-2006
Select CONVERT(varchar(100), GETDATE(), 106): 16 05 2006
Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 2006
Select CONVERT(varchar(100), GETDATE(), 108): 10:57:49
Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM
Select CONVERT(varchar(100), GETDATE(), 110): 05-16-2006
Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/16
Select CONVERT(varchar(100), GETDATE(), 112): 20060516
Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:513
Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:547
Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:49
Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.700
Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.827
Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM

函式 引數/功能
GetDate( ) 返回系統目前的日期與時間
DateDiff (interval,date1,date2) 以interval 指定的方式,返回date2 與date1兩個日期之間的差值 date2-date1
DateAdd (interval,number,date) 以interval指定的方式,加上number之後的日期
DatePart (interval,date) 返回日期date中,interval指定部分所對應的整數值
DateName (interval,date) 返回日期date中,interval指定部分所對應的字串名稱
引數 interval的設定值如下:

值 縮 寫(Sql Server) Access 和 ASP 說明
Year Yy yyyy 年 1753 ~ 9999
Quarter Qq q 季 1 ~ 4
Month Mm m 月1 ~ 12
Day of year Dy y 一年的日數,一年中的第幾日 1-366
Day Dd d 日,1-31
Weekday Dw w 一週的日數,一週中的第幾日 1-7
Week Wk ww 周,一年中的第幾周 0 ~ 51
Hour Hh h 時0 ~ 23
Minute Mi n 分鐘0 ~ 59
Second Ss s 秒 0 ~ 59
Millisecond Ms - 毫秒 0 ~ 999