[轉貼] convert()的datetime()和getdate()時間類型轉換

 

出處:http://www.111cn.net/database/mssqlserver/42611.htm

GETDATE()其實我不常用,我大多使用DATEADD(hour, 8, GETUTCDATE()),這樣子不管我SQL放哪都可以正確的抓到台灣時間


獲取當前日期利用 convert 來轉換成我們需要的datetime格式.


select CONVERT(varchar(12) , getdate(), 112 )

20040912

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 102 )

2004.09.12

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 101 )

09/12/2004

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 103 )

12/09/2004

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 104 )

12.09.2004

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 105 )

12-09-2004

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 106 )

12 09 2004

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 107 )

09 12, 2004

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 108 )

11:06:08

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 109 )

09 12 2004 1

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 110 )

09-12-2004

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 113 )

12 09 2004 1

------------------------------------------------------------


select CONVERT(varchar(12) , getdate(), 114 )

11:06:08.177

------------------------------------------------------------


declare @dateTime DateTime--定義一個datetime的變量

set @dateTime=getdate(); --獲取系統當前時間,並賦值給@dateTime字段


--短日期格式:yyyy-m-d


SELECT REPLACE(CONVERT(varchar(10),@dateTime,120),N'-0','-')


--長日期格式:yyyy年mm月dd日


SELECT STUFF(STUFF(CONVERT(char(8),@dateTime,112),5,0,N'年'),8,0,N'月')+N'日'


--長日期格式:yyyy年m月d日


SELECT DATENAME(Year,@dateTime)+N'年'+CAST(DATEPART(Month,@dateTime) AS varchar)+N'月'+DATENAME(Day,@dateTime)+N'日'


--完整日期+時間格式:yyyy-mm-dd hh:mi:ss:mmm


SELECT CONVERT(char(11),@dateTime,120)+CONVERT(char(12),@dateTime,114)


------------------------------------------------------------------------------------------------


2、日期推算處理


DECLARE @dt datetime

SET @dt=GETDATE()

DECLARE @number int

SET @number=3


  1.指定日期該年的第一天或最後一天

  1.1 年的第一天


SELECT CONVERT(char(5),@dt,120)+'1-1'


  1.2 年的最後一天


SELECT CONVERT(char(5),@dt,120)+'12-31'


  2.指定日期所在季度的第一天或最後一天

  2.1 季度的第一天


SELECT CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@dt)*3-Month(@dt)-2,

@dt),120)+'1')

  2.2 季度的最後一天(CASE判斷法)



SELECT CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@dt)*3-Month(@dt),@dt),120)+CASE WHEN DATEPART(Quarter,@dt) in(1,4)THEN '31'ELSE '30' END)


  2.3 季度的最後一天(直接推算法)



SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,@dt)*3-Month(@dt),@dt),120)+'1')


  3.指定日期所在月份的第一天或最後一天

  3.1 月的第一天



SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')


  3.2 月的最後一天



SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')


  3.3 月的最後一天(容易使用的錯誤方法)



SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))


  3.4 指定日期所在周的任意一天



SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)


  5.指定日期所在周的任意星期幾

  5.1 星期天做為一周的第1天



SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)


  5.2 星期一做為一周的第1天



SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)


看一下時間轉換參考表


可以使用的 style 值:


Style ID Style 格式

100 或者 0 mon dd yyyy hh:miAM (或者 PM)

101 mm/dd/yy

102 yy.mm.dd

103 dd/mm/yy

104 dd.mm.yy

105 dd-mm-yy

106 dd mon yy

107 Mon dd, yy

108 hh:mm:ss

109 或者 9 mon dd yyyy hh:mi:ss:mmmAM(或者 PM)

110 mm-dd-yy

111 yy/mm/dd

112 yymmdd

113 或者 13 dd mon yyyy hh:mm:ss:mmm(24h)

114 hh:mi:ss:mmm(24h)

120 或者 20 yyyy-mm-dd hh:mi:ss(24h)

121 或者 21 yyyy-mm-dd hh:mi:ss.mmm(24h)

126 yyyy-mm-ddThh:mm:ss.mmm(沒有空格)

130 dd mon yyyy hh:mi:ss:mmmAM

131 dd/mm/yy hh:mi:ss:mmmAM

留言

這個網誌中的熱門文章

TeknoParrot 模擬器介紹,俗稱《鸚鵡模擬器》

[轉貼] ASP.NET傳遞參數給Crystal Report做Export或Print的動作

Raspberry Pi 樹莓派 - Raspbian 忘記密碼簡單重設