Loading,你用IE,难怪你打不开

Sql Server的DateTime相关

收集和部分原创

--年月日
select getdate()[现在], YEAR(GETDATE()) [年],MONTH(GETDATE())[月],DAY(GETDATE())[日],
ISDATE('2012-12-11')[是否日期1],ISDATE('2012x12-11')[是否日期2],
GETUTCDATE()[当前UTC(世界标准时间)日期值],				SYSDATETIME()[统时间 SysDateTime],
sysdatetimeoffset()[获取当前日期和时间 SysDateTimeOffset],	CURRENT_TIMESTAMP [当前数据库系统时间戳],
SWITCHOFFSET (SysDateTimeOffset(), '+07:00')[SWITCHOFFSET更改时间偏移量],	--SwitchOffset更改 DateTimeOffset 值的时区偏移量并保留 UTC 值
TodateTimeOffset(GetDate(),'+07:00')[TodateTimeOffset]	--返回从 datetime2 表达式转换而来的一个 datetimeoffset 值。--DatePart		
--EOMONTH--SQL Server(SQL Server 2012 至当前版本),Azure SQL Database。
select EOMONTH (getdate() ) AS 'This Month',--当月
EOMONTH (getdate(), 1 ) AS 'Next Month',--下一月
EOMONTH (getdate(), -1 ) AS 'Last Month'--上一月								
--DatePart返回代表指定日期的指定日期部分的整数									缩写				描述				
select	DATEPART(year,			getdate())	[Year],								--yy,yyyy			返回年
		DATEPART(quarter,		getdate())	[Quarter],							--qq,q				返回第几个季度
		DATEPART(month,			getdate())	[Month],							--mm,m				返回月
		DATEPART(dayofyear,		getdate())	[DayOfYear],						--dy,y				一年中的第几天
		DATEPART(day,			getdate())	[Day],								--dd,d				一年中的第几周
		DATEPART(week,			getdate())	[Week],								--wk,ww				返回年
		DATEPART(weekday,		getdate())	[Weekday],							--dw,w				返回星期几
		DATEPART(hour,			getdate())	[hour],								--hh				date中的小时部分
		DATEPART(minute,		getdate())	[minute],							--mi,n				date中的分钟部分
		DATEPART(second,		getdate())	[second],							--ss,s				date中的秒部分
		DATEPART(millisecond,	getdate())	[millisecond]						--ms				date中的毫秒部分
--DateName返回代表指定日期的指定日期部分的字符串
select	DATENAME(year,			getdate())	[Year],			
		DATENAME(quarter,		getdate())	[Quarter],		
		DATENAME(month,			getdate())	[Month],		
		DATENAME(dayofyear,		getdate())	[DayOfYear],	
		DATENAME(day,			getdate())	[Day],			
		DATENAME(week,			getdate())	[Week],			
		DATENAME(weekday,		getdate())	[Weekday],		
		DATENAME(hour,			getdate())	[hour],			
		DATENAME(minute,		getdate())	[minute],		
		DATENAME(second,		getdate())	[second],		
		DATENAME(millisecond,	getdate())	[millisecond]
--DateDIFF 返回两个日期之间的时间
select DateDiff(year,		   '2020-12-31','2021-02-03')[DateDiffYear],		
	   DateDiff(quarter,	   '2020-12-31','2021-02-03')[DateDiffQuarter],	
	   DateDiff(month,		   '2020-12-31','2021-02-03')[DateDiffMonth],	
	   DateDiff(dayofyear,	   '2020-12-31','2021-02-03')[DateDiffDayOfYear],
	   DateDiff(day,		   '2020-12-31','2021-02-03')[DateDiffDay],		
	   DateDiff(week,		   '2020-12-31','2021-02-03')[DateDiffWeek],		
	   DateDiff(weekday,	   '2020-12-31','2021-02-03')[DateDiffWeekday],	
	   DateDiff(hour,		   '2020-12-31','2021-02-03')[DateDiffhour],		
	   DateDiff(minute,		   '2020-12-31','2021-02-03')[DateDiffminute],	
	   DateDiff(second,		   '2020-12-31','2021-02-03')[DateDiffsecond]--,	
	   --DateDiff(millisecond,   '2020-12-31','2021-02-03')[DateDiffmillisecond]		--容易溢出
--DateAdd 在日期中添加或减去指定的时间间隔
select	DateAdd(year,		1,	getdate())	[Year],			
		DateAdd(quarter,	1,	getdate())	[Quarter],		
		DateAdd(month,		1,	getdate())	[Month],		
		DateAdd(dayofyear,	1,	getdate())	[DayOfYear],	
		DateAdd(day,		1,	getdate())	[Day],			
		DateAdd(week,		1,	getdate())	[Week],			
		DateAdd(weekday,	1,	getdate())	[Weekday],		
		DateAdd(hour,		1,	getdate())	[hour],			
		DateAdd(minute,		1,	getdate())	[minute],		
		DateAdd(second,		1,	getdate())	[second],		
		DateAdd(millisecond,1,	getdate())	[millisecond]
--1. 昨天、今天、明天、一周后、一个月后、一个季度后、一年后
select	dateadd(day,-1,getdate())		[昨天现在], 	getdate()						[今天现在], 
		dateadd(day,1,getdate())		[明天现在],		DATEADD(WEEK,1,getdate())		[一周后], 
		DATEADD(MM,1,getdate())			[一个月后],		DATEADD(QUARTER,1,getdate())	[一个季度后],
		DATEADD(YEAR,1,getdate())		[一年后],		dateadd(day,1-datepart(day,getdate()),getdate()) [本周一现在]
--2. 今天的时间范围
select			 DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) [STimeOfToday],	DATEADD(MS,-3,DATEADD(dd, DATEDIFF(dd,0,getdate())+1, 0)) ETimeOfToday
union ALL select convert(varchar(10), getdate(), 120)+' 00:00:00' ,			DATEADD(MS,-3,DATEADD(DD,1,convert(datetime,convert(date,getdate())))) 
union All select convert(datetime,convert(date,getdate())),					DATEADD(MS,-3,DATEADD(DD,1,convert(datetime,convert(date,getdate()))))
union All select convert(datetime,convert(varchar(10),getdate(),120)),		DATEADD(MS,-3,DATEADD(DD,1,convert(datetime,convert(varchar(10),getdate(),120))))
union All select convert(datetime,convert(varchar,getdate(),102)),			DATEADD(MS,-3,DATEADD(DD,1,convert(datetime,convert(varchar,getdate(),102))))
union All select convert(datetime,convert(varchar,getdate(),111)),			DATEADD(MS,-3,DATEADD(DD,1,convert(datetime,convert(varchar,getdate(),111))))
union All select convert(datetime,convert(varchar,getdate(),112)),			DATEADD(MS,-3,DATEADD(DD,1,convert(datetime,convert(varchar,getdate(),112))))
--3. 本月有多少天
select  datepart(dd,dateadd(dd,-1,dateadd(mm,1,cast((cast(year(getdate()) as varchar)+'-'+cast(month(getdate()) as varchar)+'-01' ) as datetime ))))
--4. 一个月第一天的 本月的最后一天
Select DATEADD(dd,-DAY(GETDATE())+1,GETDATE())					[本月的第一天的现在1],
 dateadd(day,1-datepart(day,getdate()),getdate())				[本月的第一天的现在2],
DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)						[本月开始时间], 
dateadd(M, datediff(M, 0, dateadd(M, 1, getdate())), -1)		[本月结束时间凌晨1],
dateadd(D,-1,dateadd(M,1+datediff(M,0,getdate()),0))			[本月结束时间凌晨2],
dateadd(M, datediff(M,-1,getdate()),-1)							[本月结束时间凌晨3],
dateadd(D,-1,dateadd(M,1,dateadd(day,1-datepart(day,getdate()),getdate())))[本月结束时间现在],
dateadd(ms,-3,DATEADD(mm, DATEDIFF(m, 0, getdate())+1, 0))		[本月结束时间]
--本周周几
select (((@@DATEFIRST - 1) + DATEPART(WEEKDAY, getdate()) % 7) + 7 - 1) % 7 + 1	[星期几]
--5. 上个月的最后一天
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE())-1, 0)		[上月的第一天凌晨],
DATEADD(month,-1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE()))		[上月的第一天的现在时间],
 DATEADD(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate()),0))			[上个月的结束时间]
--6. 下个月的时间范围
SELECT DATEADD(MM,DateDIFF(MM,0,GETDATE())+1,0)					[下个月的第一天凌晨],
DATEADD(m,1,DATEADD(dd,-DAY(GETDATE())+1,GETDATE()))			[下个月第一天的现在],
DATEADD(MONTH, DATEDIFF(MONTH, -1, GETDATE())-1, -1)			[下月的最后一天凌晨],
DATEADD(ms,-3,DATEADD(mm,DATEDIFF(m,0,getdate())+2,0))			[下月的最后一天结束时间]
--7.本周的星期一
Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)[本周一凌晨]
--8.本月的第一个星期一
select DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,6-datepart(day,getdate()),getdate())), 0)[本月第一个周一凌晨]
--9. 当天所在今年的第几周
select DATEDIFF(wk,dateadd(ms,0,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)),getdate()) [今年第几周]
--10.一年的第一天,本年的最后一天
Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)				[今年第一天],
dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))	[今年最后一天午夜]
--11.本季度的第一天
Select DATEADD(qq, DATEDIFF(qq,0,getdate()), 0)				[本季度的第一天]
--12.去年的最后一天
Select  DATEADD(yy, DATEDIFF(yy,0,getdate())-1, 0)			[去年开始时间],
dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()), 0))		[去年结束时间]
--13 本周 上周 本月 上月
DECLARE @ThisWeekStartTime  DateTime,@ThisWeekEndTime  DateTime,															--本周
        @LastWeekStartTime  DateTime,@LastWeekEndTime  DateTime,															--上周      
        @ThisMonthStartTime DateTime,@ThisMonthEndTime DateTime,															--本月                    
        @LastMonthSartTime  DateTime,@LastMonthEndTime DateTime;															--上月 
SELECT	@ThisWeekStartTime   = DATEADD(WEEK, DATEDIFF(WEEK, 0, CONVERT(DATETIME, GETDATE(), 120) - 1), 0),					--本周开始时间
		@ThisWeekEndTime     = DATEADD(DAY, 6, DATEADD(WEEK, DATEDIFF(WEEK, 0, CONVERT(DATETIME, GETDATE(), 120) - 1), 0)),	--本周结束时间
		@LastWeekStartTime   = DATEADD(DAY, -7, DATEADD(WEEK, DATEDIFF(WEEK, 0, CONVERT(DATETIME, GETDATE(), 120) - 1), 0)),--上周开始时间
		@LastWeekEndTime     = DATEADD(DAY, -1, DATEADD(WEEK, DATEDIFF(WEEK, 0, CONVERT(DATETIME, GETDATE(), 120) - 1), 0)),--上周结束时间  
		@ThisMonthStartTime= dateadd(dd,-day(getdate())+1,getdate()),														--本月开始时间
		@ThisMonthEndTime  = dateadd(dd,-day(getdate())+1,dateadd(m,1,getdate())) ,											--本月结束时间
		@LastMonthSartTime = dateadd(dd,-day(dateadd(month,-1,getdate()))+1,dateadd(month,-1,getdate()))					--上月开始时间
SELECT @LastMonthEndTime  = dateadd(dd,-day(getdate())+1,getdate())                                     --上月结束时间
select	@ThisWeekStartTime    [本周开始凌晨],		@ThisWeekEndTime	[本周结束凌晨],
		@LastWeekStartTime    [下周开始凌晨],		@LastWeekEndTime	[下周结束凌晨],
		@ThisMonthStartTime   [本月第一天现在],		@ThisMonthEndTime   [本月最后一天现在],
		@LastMonthSartTime    [下月第一天现在],		@LastMonthEndTime   [下月最后一天现在]

Convert函数转换字符串

set nocount on;

      SELECT 0 Style,    'CONVERT(varchar(100), GETDATE(), 0)'T_Sql,        CONVERT(varchar(100), GETDATE(), 0) ConvertResult             --02  3 2021  6:02PM
union SELECT 1 ,        'CONVERT(varchar(100), GETDATE(), 1)',            CONVERT(varchar(100), GETDATE(), 1)                         --02/03/21
union SELECT 2 ,        'CONVERT(varchar(100), GETDATE(), 2)',            CONVERT(varchar(100), GETDATE(), 2)                            --21.02.03
union SELECT 3 ,        'CONVERT(varchar(100), GETDATE(), 3)',            CONVERT(varchar(100), GETDATE(), 3)                            --03/02/21
union SELECT 4 ,        'CONVERT(varchar(100), GETDATE(), 4)',            CONVERT(varchar(100), GETDATE(), 4)                            --03.02.21
union SELECT 5 ,        'CONVERT(varchar(100), GETDATE(), 5)',            CONVERT(varchar(100), GETDATE(), 5)                            --03-02-21
union SELECT 6 ,        'CONVERT(varchar(100), GETDATE(), 6)',            CONVERT(varchar(100), GETDATE(), 6)                            --03 02 21
union SELECT 7 ,        'CONVERT(varchar(100), GETDATE(), 7)',            CONVERT(varchar(100), GETDATE(), 7)                            --02 03, 21
union SELECT 8 ,        'CONVERT(varchar(100), GETDATE(), 8)',            CONVERT(varchar(100), GETDATE(), 8)                            --18:02:27
union SELECT 9 ,        'CONVERT(varchar(100), GETDATE(), 9)',            CONVERT(varchar(100), GETDATE(), 9)                            --02  3 2021  6:02:27:123PM
union SELECT 10,        'CONVERT(varchar(100), GETDATE(), 10)',            CONVERT(varchar(100), GETDATE(), 10)                        --02-03-21
union SELECT 11,        'CONVERT(varchar(100), GETDATE(), 11)',            CONVERT(varchar(100), GETDATE(), 11)                        --21/02/03
union SELECT 12,        'CONVERT(varchar(100), GETDATE(), 12)',            CONVERT(varchar(100), GETDATE(), 12)                        --210203
union SELECT 13,        'CONVERT(varchar(100), GETDATE(), 13)',            CONVERT(varchar(100), GETDATE(), 13)                        --03 02 2021 18:02:27:123
union SELECT 14,        'CONVERT(varchar(100), GETDATE(), 14)',            CONVERT(varchar(100), GETDATE(), 14)                        --18:02:27:123
union SELECT 20,        'CONVERT(varchar(100), GETDATE(), 20)',            CONVERT(varchar(100), GETDATE(), 20)                        --2021-02-03 18:02:27
union SELECT 21,        'CONVERT(varchar(100), GETDATE(), 21)',            CONVERT(varchar(100), GETDATE(), 21)                        --2021-02-03 18:02:27.123
union SELECT 22,        'CONVERT(varchar(100), GETDATE(), 22)',            CONVERT(varchar(100), GETDATE(), 22)                        --02/03/21  6:02:27 PM
union SELECT 23,        'CONVERT(varchar(100), GETDATE(), 23)',            CONVERT(varchar(100), GETDATE(), 23)                        --2021-02-03
union SELECT 24,        'CONVERT(varchar(100), GETDATE(), 24)',            CONVERT(varchar(100), GETDATE(), 24)                        --18:02:27
union SELECT 25,        'CONVERT(varchar(100), GETDATE(), 25)',            CONVERT(varchar(100), GETDATE(), 25)                        --2021-02-03 18:02:27.123
union SELECT 100,        'CONVERT(varchar(100), GETDATE(), 100)',        CONVERT(varchar(100), GETDATE(), 100)                       --02  3 2021  6:02PM
union SELECT 101,        'CONVERT(varchar(100), GETDATE(), 101)',        CONVERT(varchar(100), GETDATE(), 101)                       --02/03/2021
union SELECT 102,        'CONVERT(varchar(100), GETDATE(), 102)',        CONVERT(varchar(100), GETDATE(), 102)                       --2021.02.03
union SELECT 103,        'CONVERT(varchar(100), GETDATE(), 103)',        CONVERT(varchar(100), GETDATE(), 103)                       --03/02/2021
union SELECT 104,        'CONVERT(varchar(100), GETDATE(), 104)',        CONVERT(varchar(100), GETDATE(), 104)                       --03.02.2021
union SELECT 105,        'CONVERT(varchar(100), GETDATE(), 105)',        CONVERT(varchar(100), GETDATE(), 105)                       --03-02-2021
union SELECT 106,        'CONVERT(varchar(100), GETDATE(), 106)',        CONVERT(varchar(100), GETDATE(), 106)                       --03 02 2021
union SELECT 107,        'CONVERT(varchar(100), GETDATE(), 107)',        CONVERT(varchar(100), GETDATE(), 107)                       --02 03, 2021
union SELECT 108,        'CONVERT(varchar(100), GETDATE(), 108)',        CONVERT(varchar(100), GETDATE(), 108)                       --18:02:27
union SELECT 109,        'CONVERT(varchar(100), GETDATE(), 109)',        CONVERT(varchar(100), GETDATE(), 109)                       --02  3 2021  6:02:27:123PM
union SELECT 110,        'CONVERT(varchar(100), GETDATE(), 110)',        CONVERT(varchar(100), GETDATE(), 110)                       --02-03-2021
union SELECT 111,        'CONVERT(varchar(100), GETDATE(), 111)',        CONVERT(varchar(100), GETDATE(), 111)                       --2021/02/03
union SELECT 112,        'CONVERT(varchar(100), GETDATE(), 112)',        CONVERT(varchar(100), GETDATE(), 112)                       --20210203
union SELECT 113,        'CONVERT(varchar(100), GETDATE(), 113)',        CONVERT(varchar(100), GETDATE(), 113)                       --03 02 2021 18:02:27:123
union SELECT 114,        'CONVERT(varchar(100), GETDATE(), 114)',        CONVERT(varchar(100), GETDATE(), 114)                       --18:02:27:123
union SELECT 120,        'CONVERT(varchar(100), GETDATE(), 120)',        CONVERT(varchar(100), GETDATE(), 120)                       --2021-02-03 18:02:27
union SELECT 121,        'CONVERT(varchar(100), GETDATE(), 121)',        CONVERT(varchar(100), GETDATE(), 121)                       --2021-02-03 18:02:27.123
union SELECT 126,        'CONVERT(varchar(100), GETDATE(), 126)',        CONVERT(varchar(100), GETDATE(), 126)                       --2021-02-03T18:02:27.123
union SELECT 130,        'CONVERT(varchar(100), GETDATE(), 130)',        CONVERT(varchar(100), GETDATE(), 130)                       --21 ????? ??????? 1442  6:02:27:123PM
union SELECT 131,        'CONVERT(varchar(100), GETDATE(), 131)',        CONVERT(varchar(100), GETDATE(), 131)                       --21/06/1442  6:02:27:123PM

set nocount off

varchar转换DateTIme回去,根据格式,比如 '01 16 2021 11:16AM'对应   --SELECT 'CONVERT(varchar(100), GETDATE(), 0) 'T_Sql, CONVERT(varchar(100), GETDATE(), 0) ConvertResult --01 16 2021 11:16AM

declare @DateSt varchar(100) = '01 16 2021 11:16AM'
declare @Date datetime= CONVERT(datetime,@DateSt,0)
select @Date [Date],DATENAME(YY,@Date)Y,DATENAME(MM,@Date)M,DATENAME(DD,@Date)D

其他博客的说法

日期申明: DECLARE @dt datetime =GETDATE()

--1.指定日期该年的第一天或最后一天--A. 年的第一天,年的最后一天

SELECT CONVERT(char(5),@dt,120)+'1-1' FDOfYear, CONVERT(char(5),@dt,120)+'12-31' LDOfYear
--2.指定日期所在季度的第一天或最后一天
--A. 季度的第一天 季度的最后一天(CASE判断法),季度的最后一天(直接推算法)
SELECT CONVERT(datetime, CONVERT(char(8), DATEADD(Month, DATEPART(Quarter,@dt)3-Month(@dt)-2, @dt), 120)+'1') DDOfQD,
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) EDOfQD_Case,
DATEADD(Day,-1, CONVERT(char(8), DATEADD(Month, 1+DATEPART(Quarter,@dt)*3-Month(@dt), @dt), 120)+'1') EDOfQD
--A. 月的第一天,月的最后一天
SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')FDOfMonth,DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1')EDOfMonth

--ERROR T-SQL
--DECLARE @number int SET @number=1--星期四
----4.指定日期所在周的任意一天
--SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)
----5.指定日期所在周的任意星期几 星期天做为一周的第1天 星期一做为一周的第1天
--SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)SunAsFirst,
-- DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)MonAsFirst

在本文中,GetDate()获得的日期由两部分组成,分别是今天的日期和当时的时间: Select GetDate() 用DateName()就可以获得相应的年、月、日,然后再把它们连接起来就可以了:

Select Datename(year,GetDate())+'-'+Datename (month,GetDate())+'-'+Datename(day,GetDate())

另外,DateName()还可以获得到小时、时间、秒、星期几、第几周,分别如下:

Select Datename(hour,GetDate()) Select Datename(minute,GetDate()) Select Datename(second,GetDate()) Select Datename(weekDay,GetDate()) Select Datename(week,GetDate())

SQL中的日期类型DateTime的默认格式就是yyyy-mm-dd hh:mi:ss: mmm,可大多数的情况我们只想得到他的日期部分,而不许要后面的时间。上一篇中提到用Datename()函数来截取拼接出不包含时间部分的日期,现在再说一种方法,更加简单的获取到不包含时间的日期

Convert函数转换字符串

记录其他博客的SQL语句

--1. Style=101时,表示日期字符串为:mm/dd/yyyy格式 SELECT CONVERT(datetime,'11/1/2003',101) --结果:2003-11-01 00:00:00.000
--2. Style=101时,表示日期字符串为:dd/mm/yyyy格式 SELECT CONVERT(datetime,'11/1/2003',103) --结果:2003-01-11 00:00:00.000
 

/*== 日期转换为字符串 ==*/ DECLARE @dt datetime SET @dt='2003-1-11'
--1. Style=101时,表示将日期转换为:mm/dd/yyyy 格式 SELECT CONVERT(varchar,@dt,101) --结果:01/11/2003
--2. Style=103时,表示将日期转换为:dd/mm/yyyy 格式 SELECT CONVERT(varchar,@dt,103) --结果:11/01/2003

/*== 这是很多人经常犯的错误,对非日期型转换使用日期的style样式 ==*/ SELECT CONVERT(varchar,'2003-1-11',101) --结果:2003-1-11
--1. /*--说明 SET DATEFORMAT设置对使用CONVERT把字符型日期转换为日期的处理也具有影响 但不影响明确指定了style的CONVERT处理。 --*/
--示例 ,在下面的示例中,第一个CONVERT转换未指定style,转换的结果受SET DATAFORMAT的影响,第二个CONVERT转换指定了style,转换结果受style的影响。 --设置输入日期顺序为 日/月/年 SET DATEFORMAT DMY
--不指定Style参数的CONVERT转换将受到SET DATEFORMAT的影响 SELECT CONVERT(datetime,'2-1-2005') --结果: 2005-01-02 00:00:00.000
--指定Style参数的CONVERT转换不受SET DATEFORMAT的影响 SELECT CONVERT(datetime,'2-1-2005',101) --结果: 2005-02-01 00:00:00.000 GO
--2. /*--说明
--如果输入的日期包含了世纪部分,则对日期进行解释处理时 年份的解释不受SET DATEFORMAT设置的影响。 --*/
--示例,在下面的代码中,同样的SET DATEFORMAT设置,输入日期的世纪部分与不输入日期的世纪部分,解释的日期结果不同。 DECLARE @dt datetime
--设置SET DATEFORMAT为:月日年 SET DATEFORMAT MDY
--输入的日期中指定世纪部分 SET @dt='01-2002-03' SELECT @dt --结果: 2002-01-03 00:00:00.000
--输入的日期中不指定世纪部分 SET @dt='01-02-03' SELECT @dt --结果: 2003-01-02 00:00:00.000 GO
--3. /*--说明
--如果输入的日期不包含日期分隔符,那么SQL Server在对日期进行解释时 将忽略SET DATEFORMAT的设置。 --*/
--示例,在下面的代码中,不包含日期分隔符的字符日期,在不同的SET DATEFORMAT设置下,其解释的结果是一样的。 DECLARE @dt datetime
--设置SET DATEFORMAT为:月日年 SET DATEFORMAT MDY SET @dt='010203' SELECT @dt --结果: 2001-02-03 00:00:00.000
--设置SET DATEFORMAT为:日月年 SET DATEFORMAT DMY SET @dt='010203' SELECT @dt --结果: 2001-02-03 00:00:00.000
--输入的日期中包含日期分隔符 SET @dt='01-02-03' SELECT @dt --结果: 2003-02-01 00:00:00.000
--以下示例演示了在不同的语言环境(SET LANGUAGE)下,DATENAME与CONVERT函数的不同结果。 USE master
--设置会话的语言环境为: English SET LANGUAGE N'English' SELECT DATENAME(Month,GETDATE()) AS [Month], DATENAME(Weekday,GETDATE()) AS [Weekday], CONVERT(varchar,GETDATE(),109) AS [CONVERT] /*--结果: Month    Weekday   CONVERT ------------- -------------- ------------------------------- March    Tuesday   Mar 15 2005 8:59PM --*/
--设置会话的语言环境为: 简体中文 SET LANGUAGE N'简体中文' SELECT DATENAME(Month,GETDATE()) AS [Month], DATENAME(Weekday,GETDATE()) AS [Weekday], CONVERT(varchar,GETDATE(),109) AS [CONVERT] /*--结果 Month    Weekday    CONVERT
posted @ 2021-01-16 11:25  老板娘的神秘商店  阅读(470)  评论(0编辑  收藏  举报