2013年9月29日 星期日

MS SQL - 日期應用

MS SQL - 日期應用


參考資料:
sql 時間轉換格式con​​vert(varchar(10),字段名,轉換格式)

SQL:Getdate+日期格式


每日一SQL-善用DATEADD和DATEDIFF


 時間轉換格式

    CONVERT ( 資料型別 [(長度)] expression內容 [樣式代碼])

簡介 : 

    convent為日期轉換函數,一般就是在時間類型(datetime, smalldatetime)與字符串類型(nchar, nvarchar, char, varchar)


俺〞 常用格式   ↓↓↓↓

8 | 108 | hh:mm:ss
12 | 112 | yymmdd
14 | 114 | hh:mi:ss:mmm(24小時制)
15 | 20 or 120 | yyyy-mm-dd hh:mi:ss(24小時制)
16 | 21 or 121 | yyyy-mm-dd hh:mi:ss:mmm(24小時制)
    
-- #時間(8, 24, 108)
--  10:25:35
    SELECT CONVERT(varchar,getdate(),24)    
 
-- #日期 + 時間 (15, 20, 120)
--  2013-09-09 10:25:35
    SELECT CONVERT(varchar,getdate(),20)   
 
-- #日期
--  2013.09.09
    SELECT CONVERT(varchar,getdate(),102) 
 
--  2013/09/09
    SELECT CONVERT(varchar,getdate(),111) 
 
--  20130909
    SELECT CONVERT(varchar,getdate(),112) 
 
-- ※補:若要取代日期內的格式
--  2013*09*09
    SELECT REPLACE(CONVERT(VARCHAR(10),getdate(),111),'/','*')






 DATEADD

簡介 : 


DATEADD是計算某日期加上一個數值,傳回的日期
DATEADD (datepart , number , date )
datepart一樣是單位,number是指定的數值,date是要被加上的原始日期


--  取得日期的月份 + 2 
    SELECT DATEADD(MONTH, 2, getdate())  
  


 DATEDIFF

簡介 : 

DATEDIFF是算兩個日期間的間隔,傳回帶正負號的整數
DATEDIFF ( datepart , startdate , enddate ) datepart為間隔的單位

--  出來的結果就是 1,代表相隔一天。
    SELECT DATEDIFF(DAY, '2013-09-28','2013-09-29')  


-- 延伸應用 --

-- 取得月份的第一天
    SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)

-- 取得月份的最後一天
    SELECT DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE()), -1)


※ 註   :  當季 - Quarter,  月 - Month ,  天 - Day
  


卒仔〞筆記 : 筆記 筆記!!!!

沒有留言:

張貼留言