sql 如何获取当前时间,所属周的开始时间和结束时间,周一为一个星期的第一天

sql 如何获取当前时间,所属周的开始时间和结束时间,周一为一个星期的第一天,第1张

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 getdate()\x0d\当前时间周的起始日期(以周一为例)select DATEADD(week,DATEDIFF(week,0,getdate()),0)\x0d\上周起始:select dateadd(week,-1,DATEADD(week,DATEDIFF(week,0,getdate()),0))\x0d\上上周起始:select dateadd(week,-2,DATEADD(week,DATEDIFF(week,0,getdate()),0))\x0d\上上上周起始:select dateadd(week,-3,DATEADD(week,DATEDIFF(week,0,getdate()),0))\x0d\\x0d\周七以此类推

一、DateAdd()方法说明

SQL Server提供了日期函数DateAdd用于获得某日期指定间隔后的日期。

1 定义和用法

DATEADD() 函数在日期中添加或减去指定的时间间隔。

2 语法

DATEADD(datepart,number,date)

date 参数是合法的日期表达式。number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。

datepart 参数可以是下列的值:

datepart

缩写

年 yy, yyyy

季度 qq, q

月 mm, m

年中的日 dy, y

日 dd, d

周 wk, ww

星期 dw, w

小时 hh

分钟 mi, n

秒 ss, s

毫秒 ms

微妙 mcs

纳秒 ns

实例

假设我们有下面这个 "Orders" 表:

OrderId

ProductName

OrderDate

'Computer' 2016-12-29 16:25:46635

现在,我们希望向 "OrderDate" 添加 2 天,这样就可以找到付款日期。

我们使用如下 SELECT 语句:

SELECT OrderId,DATEADD(day,2,OrderDate) AS OrderPayDateFROM Orders

结果:

OrderId

OrderPayDate

2016-12-31 16:25:46635

二、SQL代码

1

PRINT DateAdd(day, 100, GetDate())

三、运行测试

1

08 31 2017 2:56PM

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

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')

select from ShopOrder where datediff(week,ordTime,getdate()-1)=0 //查询当天日期在一周年的数据

select from ShopOrder where datediff(day,ordTime,getdate()-1)=0 //查询当天的所有数据

--查询当天:

select from info where DateDiff(dd,datetime,getdate())=0

--查询24小时内的:

select from info where DateDiff(hh,datetime,getDate())<=24

--info为表名,datetime为数据库中的字段值

--查询当天:

select from info where DateDiff(dd,datetime,getdate())=0

--查询24小时内的:

select from info where DateDiff(hh,datetime,getDate())<=24

--info为表名,datetime为数据库中的字段值

中文版sql Server中:

Select '本周一',DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

Select '下周一',DATEADD(wk, DATEDIFF(wk,0,getdate())+1, 0)

Select '本周最末',dateadd(ms,-3,DATEADD(wk, DATEDIFF(wk,0,getdate())+1, 0))

Select '本周五',DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)

Select '本周五末',dateadd(day,-2,dateadd(ms,-3,DATEADD(wk, DATEDIFF(wk,0,getdate())+1, 0)))

以上就是关于sql 如何获取当前时间,所属周的开始时间和结束时间,周一为一个星期的第一天全部的内容,包括:sql 如何获取当前时间,所属周的开始时间和结束时间,周一为一个星期的第一天、sql如何通过当前日期获取上周、上上周、上上上周的起始日期、sql怎样计算固定天数后的日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存