1.sql如何通过当前日期获取上周,上上周,上上上周的起始日期(周一_周七)

1.sql如何通过当前日期获取上周,上上周,上上上周的起始日期(周一_周七),第1张

当前时间 select getdate()

当前时间周的起始日期(以周一为例)select DATEADD(week,DATEDIFF(week,0,getdate()),0)

上周起始:select dateadd(week,-1,DATEADD(week,DATEDIFF(week,0,getdate()),0))

上周起始:select dateadd(week,-2,DATEADD(week,DATEDIFF(week,0,getdate()),0))

上上上周起始:select dateadd(week,-3,DATEADD(week,DATEDIFF(week,0,getdate()),0))

周七以此类推

sql语句怎么获取系统时间

sql读取系统日期和时间的方法如下:

--获取当前日期(如:yyyymmdd)

select CONVERT (nvarchar(12),GETDATE(),112)

--获取当前日期(如:yyyymmdd hh:MM:ss)

select GETDATE()

--获取当前日期(如:yyyy-mm-dd)

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

--获取当前日期(如:yyyy/mm/dd)

select DATENAME(YEAR,GETDATE())+'/'+DATENAME(MONTH,GETDATE())+'/'+DATENAME(DAY,GETDATE())

--获取几种日期

select DATENAME(YEAR,GETDATE()) --年份(YYYY)

select DATENAME(YY,GETDATE())

select DATENAME(MM,GETDATE()) --月份

select DATENAME(DD,GETDATE()) --日期

select dateName(hh,getdate()) --获取小时

select DATENAME(MI,GETDATE()) --获取分钟

select DATENAME(SECOND,GETDATE()) --获取秒

select DATENAME(WEEK,GETDATE()) --获取当前星期(周)是这一年中的第几个星期(周)

select DATENAME(WEEKDAY,GETDATE()) --星期几

--第一个星期天

declare @a datetime

set @a='2022-5-25'

SELECT case when dateadd(dd,-day(@a)+1,@a)<DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,-day(@a)+1,@a)), 0)

then DATEADD(DD,-1,DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,-day(@a)+1,@a)),0))

else DATEADD(DD,6,DATEADD(wk, DATEDIFF(wk,0,dateadd(dd,-day(@a)+1,@a)),0)) end

如果是第二个星期天,就把6改成:6+7=13,以此类推。

SELECT GETDATE() 当前时间,DATEADD(DAY,-CASE DATENAME(WEEKDAY,GETDATE()) WHEN '星期一' THEN 0

WHEN '星期二' THEN 1 WHEN '星期三' THEN 2 WHEN '星期四' THEN 3 WHEN '星期五' THEN 4 WHEN '星期六' THEN 5 ELSE 6 END,GETDATE()) 星期一日期,

DATEADD(DAY,CASE DATENAME(WEEKDAY,GETDATE()) WHEN '星期一' THEN 6

WHEN '星期二' THEN 5 WHEN '星期三' THEN 4 WHEN '星期四' THEN 3 WHEN '星期五' THEN 2 WHEN '星期六' THEN 1 ELSE 0 END,GETDATE()) 星期日日期

下面的语句取当前日期所在的星期的星期一的日期

select

dateadd(day,

2-datepart(weekday,getdate()),getdate())

根据条件替换getdate(),就可以了

--查某个日期所属的这个星期的记录

declare @datetime datetime

set @datetime = (SELECT time from user where 条件)

--前面两行的作用是从time列中按某条件取出一个值(即取出一个时间)

--下面才好根据这个时间判断一周内的记录

SET DATEFIRST 1 --设定周一为一周的第一天,默认为周日为第一天

SELECT from user

where time between (@datetime-DATEPART (Weekday,@datetime)+1)

and (@datetime+7-DATEPART (Weekday,@datetime)+1)

注:DATEPART(Weekday,datetime) 返回datetime是该周内的第几天。用法请参考Transact-SQL 参考

--查某个日期所属的这个季度的记录

SELECT from user

where time

between CONVERT(datetime,CONVERT(char(8),DATEADD(Month,DATEPART(Quarter,@datetime)3-Month(@datetime)-2,@datetime),120)+'1')

and DATEADD(Day,-1,CONVERT(char(8),DATEADD(Month,1+DATEPART(Quarter,@datetime)3-Month(@datetime),@datetime),120)+'1')

刚看到你的定向求助,在sqlserver中也有查询已知日期是星期几的函数。

如下举例:

SELECT DATEPART(WEEKDAY, 已知日期)。

如还有问题,请追问。

以上就是关于1.sql如何通过当前日期获取上周,上上周,上上上周的起始日期(周一_周七)全部的内容,包括:1.sql如何通过当前日期获取上周,上上周,上上上周的起始日期(周一_周七)、sql语句怎么获取系统时间、SQL 如何得到本月第一个星期天的日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9809955.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存