首页 > 代码库 > sqlserver中对时间类型的字段转换

sqlserver中对时间类型的字段转换

获取当前日期利用 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 31ELSE 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)