sql时间格式转换大全
- 格式:docx
- 大小:14.31 KB
- 文档页数:3
mssql中常⽤的时间格式转换View Code1sql server2000中使⽤convert来取得datetime数据类型样式(全)23⽇期数据格式的处理,两个⽰例:45CONVERT(varchar(16), 时间⼀, 20) 结果:2007-02-0108:02/*时间⼀般为getdate()函数或数据表⾥的字段*/67CONVERT(varchar(10), 时间⼀, 23) 结果:2007-02-01/*varchar(10)表⽰⽇期输出的格式,如果不够长会发⽣截取*/8910语句及查询结果:11Select CONVERT(varchar(100), GETDATE(), 0): 0516200610:57AM12Select CONVERT(varchar(100), GETDATE(), 1): 05/16/0613Select CONVERT(varchar(100), GETDATE(), 2): 06.05.1614Select CONVERT(varchar(100), GETDATE(), 3): 16/05/0615Select CONVERT(varchar(100), GETDATE(), 4): 16.05.0616Select CONVERT(varchar(100), GETDATE(), 5): 16-05-0617Select CONVERT(varchar(100), GETDATE(), 6): 16050618Select CONVERT(varchar(100), GETDATE(), 7): 0516, 0619Select CONVERT(varchar(100), GETDATE(), 8): 10:57:4620Select CONVERT(varchar(100), GETDATE(), 9): 0516200610:57:46:827AM21Select CONVERT(varchar(100), GETDATE(), 10): 05-16-0622Select CONVERT(varchar(100), GETDATE(), 11): 06/05/1623Select CONVERT(varchar(100), GETDATE(), 12): 06051624Select CONVERT(varchar(100), GETDATE(), 13): 1605200610:57:46:93725Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:96726Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-1610:57:4727Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-1610:57:47.15728Select CONVERT(varchar(100), GETDATE(), 22): 05/16/0610:57:47 AM29Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-1630Select CONVERT(varchar(100), GETDATE(), 24): 10:57:4731Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-1610:57:47.25032Select CONVERT(varchar(100), GETDATE(), 100): 0516200610:57AM33Select CONVERT(varchar(100), GETDATE(), 101): 05/16/200634Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.1635Select CONVERT(varchar(100), GETDATE(), 103): 16/05/200636Select CONVERT(varchar(100), GETDATE(), 104): 16.05.200637Select CONVERT(varchar(100), GETDATE(), 105): 16-05-200638Select CONVERT(varchar(100), GETDATE(), 106): 1605200639Select CONVERT(varchar(100), GETDATE(), 107): 0516, 200640Select CONVERT(varchar(100), GETDATE(), 108): 10:57:4941Select CONVERT(varchar(100), GETDATE(), 109): 0516200610:57:49:437AM42Select CONVERT(varchar(100), GETDATE(), 110): 05-16-200643Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/1644Select CONVERT(varchar(100), GETDATE(), 112): 2006051645Select CONVERT(varchar(100), GETDATE(), 113): 1605200610:57:49:51346Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:54747Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-1610:57:4948Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-1610:57:49.70049Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.82750Select CONVERT(varchar(100), GETDATE(), 130): 18142710:57:49:907AM51Select CONVERT(varchar(100), GETDATE(), 131): 18/04/142710:57:49:920AM5253说明:54使⽤ CONVERT:5556CONVERT ( data_type [ ( length ) ] , expression [ , style ] )5758参数59expression6061是任何有效的 Microsoft® SQL Server™ 表达式。
在PostgreSQL中,可以使用日期和时间函数来转换时间格式。
以下是一些常见的转换常识:1. 转换为日期格式:```sqlSELECT TO_DATE('2023-07-19 10:30:00', 'YYYY-MM-DD HH24:MI:SS');```这将把字符串'2023-07-19 10:30:00'转换为日期格式。
'YYYY-MM-DD HH24:MI:SS'是日期字符串的模板,其中YYYY表示年份,MM表示月份,DD表示日期,HH24表示小时(24小时制),MI表示分钟,SS表示秒。
2. 转换为特定时间格式:```sqlSELECT TO_CHAR(NOW(), 'DD-MM-YYYY HH24:MI:SS');```这将把当前时间转换为'DD-MM-YYYY HH24:MI:SS'格式的字符串。
你可以根据需要调整时间格式模板。
3. 从日期格式转换为时间戳:```sqlSELECT TO_TIMESTAMP('2023-07-19 10:30:00', 'YYYY-MM-DD HH24:MI:SS');```这将把日期字符串'2023-07-19 10:30:00'转换为时间戳格式。
4. 从时间戳转换为日期格式:```sqlSELECT TO_DATE(1671363623, 'YYYYMMDDHH24MISS');```这将把时间戳1671363623转换为日期格式。
注意,这里的时间戳是十进制的。
这些是一些常见的转换示例,你可以根据具体需求使用适当的函数和模板进行时间格式的转换。
sql时间转换sql时间转换获取当年第⼀天 select dateadd(year, datediff(year, 0, getdate()), 0)时间转星期⼏select datename(weekday, getdate())获取当前时间:select GETDATE()获取当天⼏点select convert(varchar(10), getdate(), 120)+' 08:00:00'时间转时间戳(SELECT DATEDIFF(S,'1970-01-01 00:00:00', (select DateAdd(dd,-7,getdate()))) - 8 * 3600) )1. SELECT CONVERT(VARCHAR,GETDATE(),23) --截取年⽉⽇2. SELECT CONVERT(VARCHAR,GETDATE(),8) --截取时分秒将时间戳转换成时间:select DATEADD(s, Convert(int,1599751120)+ 8*3600, '1970-01-01 00:00:00') SELECT DATEADD(second,1560404817,'1970-01-01 08:00:00')将年⽉⽇转换成⽉⽇:select RIGHT(CONVERT(VARCHAR(10),'2020-9-28 11:07:00',120),5)获取当前时间往前推7天:select DateAdd(dd,-7,getdate())获取当前时间往后推7天:select DateAdd(dd,7,getdate())获取当前时间往前推1年:select DateAdd(yy,-1,getdate())获取当前时间往后推1年:select DateAdd(yy,-1,getdate())想获取其他时间请按照以下参数表:1、获取当前时间:SQL:SELECT NOW();结果:2018-04-10 14:21:392、获取当前时间年份:SQL:SELECT YEAR(NOW());结果:2018(1)获取上⼀年SQL:SELECT YEAR(NOW())-1;结果:2017获取其余年份,同上3、获取当前时间年份及当前该年第⼏周SQL:SELECT YEARWEEK(NOW());结果:201814代表当前⽇期是2018年第14周4、获取当前时间⽉份SQL:SELECT MONTH(NOW());结果:45、获取当前时间⽉份英⽂名称SQL:SELECT MONTHNAME(NOW());结果:April6、获取当前时间是该⽉的第⼏天SQL:SELECT DAY(NOW());结果:107、获取当前时间是周⼏SQL:SELECT DAYNAME(NOW());结果:Tuesday8、获取当前时间是该年第⼏天SQL:SELECT DAYOFYEAR(NOW());结果:1009、获取当前时间是该⽉的第⼏天SQL:SELECT DAYOFMONTH(NOW());结果:1010、获取当前时间是该周第⼏天SQL:SELECT DAYOFWEEK(NOW());结果:3默认周⽇为第⼀天注:可把NOW()替换成想要查询的⽇期举例:SQL:SELECT DAYOFYEAR(‘2008-08-08 08:08:08’);结果:2212008年8⽉8号是2008年的第221天。
SQL Server日期时间格式转换字符串详解本文我们主要介绍了SQL Server日期时间格式转换字符串的相关知识,并给出了大量实例对其各个参数进行对比说明,希望能够对您有所帮助。
在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的。
本文我们主要就介绍一下SQL Server日期时间转字符串的相关知识,接下来就让我们一起来了解一下这部分内容。
日期时间转字符串:1.Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM2.Select CONVERT(varchar(100), GETDATE(), 1): 05/16/063.Select CONVERT(varchar(100), GETDATE(), 2): 06.05.164.Select CONVERT(varchar(100), GETDATE(), 3): 16/05/065.Select CONVERT(varchar(100), GETDATE(), 4): 16.05.066.Select CONVERT(varchar(100), GETDATE(), 5): 16-05-067.Select CONVERT(varchar(100), GETDATE(), 6): 16 05 068.Select CONVERT(varchar(100), GETDATE(), 7): 05 16, 069.Select CONVERT(varchar(100), GETDATE(), 8): 10:57:4610.Select CONVERT(varchar(100), GETDATE(), 9): 05 16 2006 10:57:46:827AM11.Select CONVERT(varchar(100), GETDATE(), 10): 05-16-0612.Select CONVERT(varchar(100), GETDATE(), 11): 06/05/1613.Select CONVERT(varchar(100), GETDATE(), 12): 06051614.Select CONVERT(varchar(100), GETDATE(), 13): 16 05 2006 10:57:46:93715.Select CONVERT(varchar(100), GETDATE(), 14): 10:57:46:96716.Select CONVERT(varchar(100), GETDATE(), 20): 2006-05-16 10:57:4717.Select CONVERT(varchar(100), GETDATE(), 21): 2006-05-16 10:57:47.15718.Select CONVERT(varchar(100), GETDATE(), 22): 05/16/06 10:57:47 AM19.Select CONVERT(varchar(100), GETDATE(), 23): 2006-05-1620.Select CONVERT(varchar(100), GETDATE(), 24): 10:57:4721.Select CONVERT(varchar(100), GETDATE(), 25): 2006-05-16 10:57:47.25022.Select CONVERT(varchar(100), GETDATE(), 100): 05 16 2006 10:57AM23.Select CONVERT(varchar(100), GETDATE(), 101): 05/16/200624.Select CONVERT(varchar(100), GETDATE(), 102): 2006.05.1625.Select CONVERT(varchar(100), GETDATE(), 103): 16/05/200626.Select CONVERT(varchar(100), GETDATE(), 104): 16.05.200627.Select CONVERT(varchar(100), GETDATE(), 105): 16-05-200628.Select CONVERT(varchar(100), GETDATE(), 106): 16 05 200629.Select CONVERT(varchar(100), GETDATE(), 107): 05 16, 200630.Select CONVERT(varchar(100), GETDATE(), 108): 10:57:4931.Select CONVERT(varchar(100), GETDATE(), 109): 05 16 2006 10:57:49:437AM32.Select CONVERT(varchar(100), GETDATE(), 110): 05-16-200633.Select CONVERT(varchar(100), GETDATE(), 111): 2006/05/1634.Select CONVERT(varchar(100), GETDATE(), 112): 2006051635.Select CONVERT(varchar(100), GETDATE(), 113): 16 05 2006 10:57:49:51336.Select CONVERT(varchar(100), GETDATE(), 114): 10:57:49:54737.Select CONVERT(varchar(100), GETDATE(), 120): 2006-05-16 10:57:4938.Select CONVERT(varchar(100), GETDATE(), 121): 2006-05-16 10:57:49.70039.Select CONVERT(varchar(100), GETDATE(), 126): 2006-05-16T10:57:49.82740.Select CONVERT(varchar(100), GETDATE(), 130): 18 ???? ?????? 1427 10:57:49:907AM在SQL数据库中,有一类函数是不得不提的,那就是SQL Server日期时间函数,这是SQL Server处理日期和时间最常用的函数,下面就将为介绍这类函数。
在SQL 中,可以使用不同的格式来存储日期和时间。
以下是一些常用的日期和时间格式:
1. 格式化日期:
```sql
SELECT DATE_FORMAT(date_column, '%Y-%m-%d') AS formatted_date FROM table_name;
```
这将返回一个格式为'YYYY-MM-DD' 的日期字符串。
2. 格式化时间:
```sql
SELECT DATE_FORMAT(time_column, '%H:%i:%s') AS formatted_time FROM table_name;
```
这将返回一个格式为'HH:MI:SS' 的时间字符串。
3. 格式化日期和时间:
```sql
SELECT DATE_FORMAT(datetime_column, '%Y-%m-%d %H:%i:%s') AS formatted_datetime FROM table_name;
```
这将返回一个格式为'YYYY-MM-DD HH:MI:SS' 的日期时间字符串。
其中,`date_column`、`time_column` 和`datetime_column` 是存储日期、时间和日期时间的列名,`table_name` 是包含这些列的表名。
在格式字符串中,`%Y` 表示四位数的年份,`%m` 表示两位数的月份,`%d` 表示两位数的日期,`%H` 表示两位数的小时数,`%i` 表示两位数的分钟数,`%s` 表示两位数的秒数。
* 默认值(style0 或100、9 或109、13 或113、20 或120、21 或121)始终返回世纪数位(yyyy)。
** 当转换为datetime 时输入;当转换为字符数据时输出。
*** 专门用于XML。
对于从datetime或smalldatetime到character数据的转换,输出格式如表中所示。
对于从float、money或smallmoney到characte r数据的转换,输出等同于style2。
对于从real到character数据的转换,输出等同于style1。
重要默认情况下,SQL Server 根据截止年份2049 解释两位数字的年份。
即,两位数字的年份49 被解释为2049,而两位数字的年份50 被解释为1950。
许多客户端应用程序(例如那些基于OLE 自动化对象的客户端应用程序)都使用2030 作为截止年份。
SQL Server 提供一个配置选项("两位数字的截止年份"),借以更改SQL Server 所使用的截止年份并对日期进行一致性处理。
然而最安全的办法是指定四位数字年份。
使用CONVERT:CONVERT (data_type[(length)], expression [, style])select CONVERT(varchar, getdate(), 120 )2004-09-12 11:06:08select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),\-\,\\),\ \, \\),\:\,\\)20040912110608select CONVERT(varchar(12) , getdate(), 111 )2004/09/12select CONVERT(varchar(12) , getdate(), 112 )20040912select CONVERT(varchar(12) , getdate(), 102 )2004.09.12select CONVERT(varchar(12) , getdate(), 101 )09/12/2004select CONVERT(varchar(12) , getdate(), 103 )12/09/2004select CONVERT(varchar(12) , getdate(), 104 )12.09.2004select CONVERT(varchar(12) , getdate(), 105 )12-09-2004select CONVERT(varchar(12) , getdate(), 106 )12 09 2004select CONVERT(varchar(12) , getdate(), 107 )09 12, 2004select CONVERT(varchar(12) , getdate(), 108 )11:06:08select CONVERT(varchar(12) , getdate(), 109 ) 09 12 2004 1select CONVERT(varchar(12) , getdate(), 110 ) 09-12-2004select CONVERT(varchar(12) , getdate(), 113 ) 12 09 2004 1select CONVERT(varchar(12) , getdate(), 114 ) 11:06:08.177。
sqlserver 字符串转时间非标准格式在SQL Server中,我们经常遇到将字符串转换为日期和时间的需求。
通常情况下,SQL Server提供了标准的日期和时间格式转换函数,例如CONVERT和TRY_CONVERT。
但是有时候,我们可能会遇到非标准格式的日期和时间字符串,这时候我们需要使用其他方法来转换。
首先,让我们来了解一下SQL Server中的标准日期和时间格式,以便更好地理解非标准格式的转换。
在SQL Server中,标准的日期和时间格式包括以下几种:1. yyyy-MM-dd:年份-月份-日期2. dd/MM/yyyy:日期/月份/年份3. MM/dd/yyyy:月份/日期/年份4. yyyy-MM-dd HH:mm:ss:年份-月份-日期小时:分钟:秒5. yyyy-MM-ddTHH:mm:ss:年份-月份-日期THH:mm:ss这些是SQL Server中常用的标准日期和时间格式,可直接使用CONVERT函数将字符串转换为日期和时间类型。
例如,使用CONVERT函数将字符串'2022-01-01'转换为日期类型:```sqlSELECT CONVERT(DATE, '2022-01-01') AS ConvertedDate;```在这个例子中,我们使用CONVERT函数将字符串'2022-01-01'转换为DATE类型,并将结果命名为ConvertedDate。
然而,对于非标准格式的日期和时间字符串,我们需要使用一些其他的方法来进行转换。
在SQL Server中,我们可以使用CAST函数将字符串转换为日期和时间类型,但是它要求字符串的格式必须符合SQL Server的日期和时间格式。
如果字符串的格式不符合标准格式,我们可以使用SUBSTRING函数和字符串操作来提取日期和时间的各个部分,并使用这些部分来构建一个符合标准格式的字符串,然后再进行转换。
与时间相关的SQL语句sql获取当前时间sql时间⽐较sql时间格式化1. 当前系统⽇期、时间select getdate()2. dateadd 在向指定⽇期加上⼀段时间的基础上,返回新的 datetime 值例如:向⽇期加上2天select dateadd(day,2,'2004-10-15') --返回:2004-10-1700:00:00.0003. datediff 返回跨两个指定⽇期的⽇期和时间边界数。
select datediff(day,'2004-09-01','2004-09-18') --返回:174. datepart 返回代表指定⽇期的指定⽇期部分的整数。
SELECT DATEPART(month, '2004-10-15') --返回 105. datename 返回代表指定⽇期的指定⽇期部分的字符串SELECT datename(weekday, '2004-10-15') --返回:星期五6. day(), month(),year() --可以与datepart对照⼀下select 当前⽇期=convert(varchar(10),getdate(),120),当前时间=convert(varchar(8),getdate(),114)7. select datename(dw,'2004-10-15')select 本年第多少周=datename(week,getdate()),今天是周⼏=datename(weekday,getdate())函数参数/功能GetDate( ) --返回系统⽬前的⽇期与时间DateDiff (interval,date1,date2) --以interval 指定的⽅式,返回date2 与date1两个⽇期之间的差值 date2-date1DateAdd (interval,number,date) --以interval指定的⽅式,加上number之后的⽇期DatePart (interval,date) ---返回⽇期date中,interval指定部分所对应的整数值DateName (interval,date) --返回⽇期date中,interval指定部分所对应的字符串名称参数 interval的设定值如下:值缩写(Sql Server) Access 和 ASP 说明Year Yy yyyy 年 1753 ~ 9999Quarter Qq q 季 1 ~ 4Month Mm m ⽉1 ~ 12Day of year Dy y ⼀年的⽇数,⼀年中的第⼏⽇ 1-366Day Dd d ⽇,1-31Weekday Dw w ⼀周的⽇数,⼀周中的第⼏⽇ 1-7Week Wk ww 周,⼀年中的第⼏周 0 ~ 51Hour Hh h 时0 ~ 23Minute Mi n 分钟0 ~ 59Second Ss s 秒 0 ~ 59Millisecond Ms - 毫秒 0 ~ 999access 和 asp 中⽤date()和now()取得系统⽇期时间;其中DateDiff,DateAdd,DatePart也同是能⽤于Access和asp中,这些函数的⽤法也类似举例:1.GetDate() ⽤于sql server :select GetDate()2.DateDiff('s','2005-07-20','2005-7-25 22:56:32')返回值为 514592 秒DateDiff('d','2005-07-20','2005-7-25 22:56:32')返回值为 5 天3.DatePart('w','2005-7-25 22:56:32')返回值为 2 即星期⼀(周⽇为1,周六为7)DatePart('d','2005-7-25 22:56:32')返回值为 25即25号DatePart('y','2005-7-25 22:56:32')返回值为 206即这⼀年中第206天DatePart('yyyy','2005-7-25 22:56:32')返回值为 2005即2005年SQL Server DATEPART() 函数返回 SQLServer datetime 字段的⼀部分。
Sqlserver中经常要操作一些时间类型的字段转换,我又不太记得住,所以搜集了以下的一些SqlserverConvert DateTime相关的资料发表在自己的小站里,方便自己以后要用的时候寻找,望对大家也有帮助.
将sqlserver中table表的[datetime]字段值‘2007-11-07 16:41:35.033’ 改为
‘2007-11-07 00:00:00‘去除了时分秒.[datetime]字段要为datetime类型的哦.UPDATE table SET [datetime]= Convert(char(11),[datetime],120)
获取当前日期利用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.指定日期该年的第一天或最后一天
--A. 年的第一天
SELECT CONVERT(char(5),@dt,120)+'1-1'
--B. 年的最后一天
SELECT CONVERT(char(5),@dt,120)+'12-31'
--2.指定日期所在季度的第一天或最后一天
--A. 季度的第一天
SELECT CONVERT(datetime,
CONVERT(char(8),
DATEADD(Month,
DATEPART(Quarter,@dt)*3-Month(@dt)-2,
@dt),
120)+'1')
--B. 季度的最后一天(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)
--C. 季度的最后一天(直接推算法)
SELECT DATEADD(Day,-1,
CONVERT(char(8),
DATEADD(Month,
1+DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)+'1')
--3.指定日期所在月份的第一天或最后一天
--A. 月的第一天
SELECT CONVERT(datetime,CONVERT(char(8),@dt,120)+'1')
--B. 月的最后一天
SELECT DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1,@dt),120)+'1') --C. 月的最后一天(容易使用的错误方法)
SELECT DATEADD(Month,1,DATEADD(Day,-DAY(@dt),@dt))
--4.指定日期所在周的任意一天
SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)
--5.指定日期所在周的任意星期几
--A. 星期天做为一周的第1天
SELECT
DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt) --B. 星期一做为一周的第1天
SELECT
DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@d t)
转自:/fengfage/blog/item/1429fda1b9ec3d9b46106453.html。