快捷搜索:  汽车  科技

查询最新日期数据sql(SQLSEVER查询本周上周上上周的数据方法)

查询最新日期数据sql(SQLSEVER查询本周上周上上周的数据方法)#周一为一周的第一天示例:在 SQL Server 中默认情况下,每周的开始都是从周日开始算起的。关于使用 SET DATEFIRST <VALUE> - <VALUE> 的值从 1 到 7,即周一到周日,默认值是 7。要注意的是 SET DATEFIRST 只在当前执行中有效,也就是说比如新开一个查询页面继续查询 SELECT @@DATEFIRST 还是显示默认值 7。

一、查询某一天的周数

SQL Server计算周数时会算上年初的不满的一周。

Mysql计算周数时不会算上年初的不满的一周

查询最新日期数据sql(SQLSEVER查询本周上周上上周的数据方法)(1)

1.1(SQL Server)

在 SQL Server 中默认情况下,每周的开始都是从周日开始算起的。

关于使用 SET DATEFIRST <VALUE> - <VALUE> 的值从 1 到 7,即周一到周日,默认值是 7。

要注意的是 SET DATEFIRST 只在当前执行中有效,也就是说比如新开一个查询页面继续查询 SELECT @@DATEFIRST 还是显示默认值 7。

示例:

#周一为一周的第一天

SET DATEFIRST 1

SELECT DATENAME(WEEK '2021-11-22') AS WeekName

结果:48

1.2 (Mysql)

#周一为一周的第一天

SELECT * FROM t1 WHERE YEARWEEK(date_format('2021-11-22' '%Y-%m-%d') 1) = YEARWEEK(now() 1);

结果:47

#周日为一周的第一天

SELECT * FROM task WHERE YEARWEEK(date_format(时间字段 '%Y-%m-%d')) = YEARWEEK(now());

结果:47

1.3 (网上的万年历)

查询最新日期数据sql(SQLSEVER查询本周上周上上周的数据方法)(2)

2021-11-23的周数是47,估计用的是Mysql


二、SQL Server中的Datediff函数

1、描述:返回两个日期之间的时间间隔 用于判断在两个日期之间存在的指定时间间隔的数目。

2、语法:DateDiff(interval startdate enddate)

3、参数:

a、interval:必选。字符串表达式,表示用于计算 startdate 和 enddate 之间的时间间隔(时间间隔=enddate减去startdate)

年:Year Yy yyyy 1753 ~ 9999

季:Quarter Qq q 1 ~ 4

月:Month Mm m 1 ~ 12

一年的日数 一年中的第几日:Day of year Dy y 1-366

日:Day Dd d 1-31

一周的日数,一周中的第几日:Weekday Dw w 1-7

周数:Week Wk ww 0 ~ 51

时:Hour Hh h 0 ~ 23

分:Minute Mi n 0 ~ 59

秒:Second Ss s 0 ~ 59

毫秒:Millisecond Ms - 0 ~ 999

查询最新日期数据sql(SQLSEVER查询本周上周上上周的数据方法)(3)

重点来了:设置 SET DATEFIRST 1 后,DATEDIFF(WEEK @date1 @date2) 并不会以周一为一周的开始,还是使用默认的周日为一周的开始。起作用的是DATENAME(WEEK '2021-11-22')


DATENAME用法:

SELECT CONVERT(varchar(10) getdate() 120)--当前年月日,Example:YYYY-MM-DD

SELECT CONVERT(varchar(10) getdate() 112)--当前年月日,Example:YYYYMMDD

SELECT CONVERT(varchar(10) getdate() 108)--当前年月日,Example:hh:mm:ss

SELECT DATENAME (day getdate())--当月几号

SELECT DATENAME (month getdate())--月份

SELECT DATENAME (quarter getdate())--季度

SELECT DATENAME (dayofyear getdate())--一年中的第几天

SELECT DATENAME(week GETDATE())--一年中第几周

SELECT DATENAME(weekday GETDATE())--星期几

SELECT DATENAME(hour GETDATE())--当前几点,24小时制的

SELECT DATENAME(minute GETDATE())--取当前分钟数

SELECT DATENAME(second GETDATE())--取当前秒数

SELECT DATENAME(millisecond GETDATE())--毫秒


三、计算一周的时间段(#周一为一周的第一天)

(SQL SERVER)

SET DATEFIRST 1

SELECT DATEADD(DAY -(DATEPART(WEEKDAY getdate())-1) getdate()) DATEADD(DAY (7-DATEPART(WEEKDAY getdate())) getdate()) getdate()

当前系统日期、时间

  • select getdate()

时间格式化为”YYYY-MM-DD“

  • select 当前日期=convert(varchar(10) getdate() 120)

(MYSQL)

查询上周数据(addtime为时间戳)

WHERE YEARWEEK(FROM_UNIXTIME(addtime '%Y-%m-%d') 1) = YEARWEEK(now() 1)-1

查询上周数据(addtime为datetime格式)

WHERE YEARWEEK(date_format(addtime '%Y-%m-%d') 1) = YEARWEEK(now() 1)-1;


四、计算今天是第几周

set datefirst 1

select 本年第几周=datename(week getdate()) 今天是周几=datename(weekday getdate())

结果:

本年第几周 今天是周几

48 星期二


五、SQL SERVER时间相关函数

GetDate( ) 返回系统目前的日期与时间

DateDiff (interval date1 date2) 以interval 指定的方式,返回date2 与date1两个日期之间的差值 date2-date1

DateAdd (interval number date) 以interval指定的方式,加上number之后的日期

DatePart (interval date) 返回日期date中,interval指定部分所对应的整数值

DateName (interval date) 返回日期date中,interval指定部分所对应的字符串名称

猜您喜欢: