資料庫操作記錄(2)日期求差DATEDIFF和格式轉換CONVERT(CHAR(10),DATE ,21) /datename(year,lr.StartTime)

SieSteven發表於2015-12-05

sqlserver 資料庫操作

1、求日期之差

select  DATEDIFF(s,lr.StartTime ,lr.endtime ) as secCount from lr

第一個引數是 計算差值的標準  可以是 year month day week hour minute  s

注意事項:

DATEDIFF(s,date1,date2  )

用法 此函式計算兩個指定日期之間日期部分的數目。結果為日期部分中等於(date2 - date1)的有符號的整數值。

當結果不是日期部分的偶數倍時,DATEDIFF 將被截斷而不是被舍入。

當使用 day 作為日期部分時,DATEDIFF 返回兩個指定的時間之間(包括第二個日期但不包括第一個日期)的午夜數。

當使用 month 作為日期部分時,DATEDIFF 返回兩個日期之間(包括第二個日期但不包括第一個日期)出現的月的第一天的數目。

當使用 week 作為日期部分時,DATEDIFF 返回兩個日期(包括第二個日期但不包括第一個日期)之間星期日的數目。

對於更小的時間單位存在溢位值:

milliseconds    24 天

seconds    68 年

minutes    4083 年

others    沒有溢位限制

如果超出這些限制,此函式將返回溢位錯誤。


2、處理日期格式

2.1 使用convert函式

SELECT CONVERT(CHAR(10),DATE ,21) FROM TABLE1 WHERE .....
顯示的是這種形式例2015-10-19

具體引數說明如下

SELECT CONVERT(varchar(30),getdate(),101) now
結果為
now

09/15/2001


/////////////////////////////////////////////////////////////////////////////////////


style數字在轉換時間時的含義如下


-------------------------------------------------------------------------------------------------
Style(2位表示年份)   |  Style(4位表示年份)    |   輸入輸出格式                                    
-------------------------------------------------------------------------------------------------
-                    |  0 or 100              |   mon dd yyyy hh:miAM(或PM)              
-------------------------------------------------------------------------------------------------
1                    |  101                   |   mm/dd/yy                                       
-------------------------------------------------------------------------------------------------
2                    |  102                   |   yy-mm-dd                                        
-------------------------------------------------------------------------------------------------
3                    |  103                   |   dd/mm/yy                                       
-------------------------------------------------------------------------------------------------
4                    |  104                   |   dd-mm-yy                                        
-------------------------------------------------------------------------------------------------
5                    |  105                   |   dd-mm-yy                                        
-------------------------------------------------------------------------------------------------
6                    |  106                   |   dd mon yy                                        
-------------------------------------------------------------------------------------------------
7                    |  107                   |   mon dd,yy                                        
-------------------------------------------------------------------------------------------------
8                    |  108                   |   hh:mm:ss                                         
-------------------------------------------------------------------------------------------------
-                    |  9 or 109              |   mon dd yyyy hh:mi:ss:mmmmAM(或PM)
-------------------------------------------------------------------------------------------------
10                   |  110                   |   mm-dd-yy                                         
-------------------------------------------------------------------------------------------------
11                   |  111                   |   yy/mm/dd                                        
-------------------------------------------------------------------------------------------------
12                   |  112                   |   yymmdd                                           
-------------------------------------------------------------------------------------------------
-                    |  13 or 113             |   dd mon yyyy hh:mi:ss:mmm(24小時制)  
-------------------------------------------------------------------------------------------------
14                   |  114                   |   hh:mi:ss:mmm(24小時制)                    
-------------------------------------------------------------------------------------------------
-                    |  20 or 120             |      yyyy-mm-dd hh:mi:ss(24小時制)         
-------------------------------------------------------------------------------------------------
-                    |  21 or 121             |      yyyy-mm-dd hh:mi:ss:mmm(24小時制) 

抄的執行結果

原文

SELECT CONVERT(varchar(100), GETDATE(), 0) 05  9 2011  9:12AM
 SELECT CONVERT(varchar(100), GETDATE(), 1) 05/09/11
SELECT CONVERT(varchar(100), GETDATE(), 2) 11.05.09
SELECT CONVERT(varchar(100), GETDATE(), 3) 09/05/11
SELECT CONVERT(varchar(100), GETDATE(), 4) 09.05.11
SELECT CONVERT(varchar(100), GETDATE(), 5) 09-05-11
SELECT CONVERT(varchar(100), GETDATE(), 6) 09 05 11
SELECT CONVERT(varchar(100), GETDATE(), 7) 05 09, 11
SELECT CONVERT(varchar(100), GETDATE(), 8) 09:13:14
SELECT CONVERT(varchar(100), GETDATE(), 9) 05  9 2011  9:13:14:670AM
SELECT CONVERT(varchar(100), GETDATE(), 10) 05-09-11
SELECT CONVERT(varchar(100), GETDATE(), 11) 11/05/09
SELECT CONVERT(varchar(100), GETDATE(), 12) 110509
SELECT CONVERT(varchar(100), GETDATE(), 13) 09 05 2011 09:13:14:670
SELECT CONVERT(varchar(100), GETDATE(), 14) 09:13:14:670
SELECT CONVERT(varchar(100), GETDATE(), 20) 2011-05-09 09:13:14
SELECT CONVERT(varchar(100), GETDATE(), 21) 2011-05-09 09:13:14.670
SELECT CONVERT(varchar(100), GETDATE(), 22) 05/09/11  9:15:33 AM
SELECT CONVERT(varchar(100), GETDATE(), 23) 2011-05-09
SELECT CONVERT(varchar(100), GETDATE(), 24) 09:15:33
SELECT CONVERT(varchar(100), GETDATE(), 25) 2011-05-09 09:15:33.140
SELECT CONVERT(varchar(100), GETDATE(), 100) 05  9 2011  9:15AM
SELECT CONVERT(varchar(100), GETDATE(), 101) 05/09/2011
SELECT CONVERT(varchar(100), GETDATE(), 102) 2011.05.09
SELECT CONVERT(varchar(100), GETDATE(), 103) 09/05/2011
SELECT CONVERT(varchar(100), GETDATE(), 104) 09.05.2011
SELECT CONVERT(varchar(100), GETDATE(), 105) 09-05-2011
SELECT CONVERT(varchar(100), GETDATE(), 106) 09 05 2011
SELECT CONVERT(varchar(100), GETDATE(), 107) 05 09, 2011
SELECT CONVERT(varchar(100), GETDATE(), 108) 09:16:38
SELECT CONVERT(varchar(100), GETDATE(), 109) 05  9 2011  9:16:38:543AM
SELECT CONVERT(varchar(100), GETDATE(), 110) 05-09-2011
SELECT CONVERT(varchar(100), GETDATE(), 111) 2011/05/09
SELECT CONVERT(varchar(100), GETDATE(), 112) 20110509
SELECT CONVERT(varchar(100), GETDATE(), 113) 09 05 2011 09:17:19:857
SELECT CONVERT(varchar(100), GETDATE(), 114) 09:17:19:857
SELECT CONVERT(varchar(100), GETDATE(), 120) 2011-05-09 09:17:19
SELECT CONVERT(varchar(100), GETDATE(), 121) 2011-05-09 09:17:19.857
SELECT CONVERT(varchar(100), GETDATE(), 126) 2011-05-09T09:17:19.857
SELECT CONVERT(varchar(100), GETDATE(), 130)  6 ????? ??????? 1432  9:17:19:857AM
SELECT CONVERT(varchar(100), GETDATE(), 131)  6/06/1432  9:17:19:857AM

2.2 使用datename函式   也可以實現該效果
datename(year,lr.StartTime)+'-'+datename(month,lr.StartTime)+'-'+datename(day,lr.starttime)


另外,DateName()還可以獲得到小時、時間、秒、星期幾、第幾周,分別如下:

Select Datename(hour,GetDate())
Select Datename(minute,GetDate())
Select Datename(second,GetDate())
Select Datename(weekDay,GetDate())
Select Datename(week,GetDate())
拼接日期為字串 ,以便在c#程式碼中直接使用。


相關文章