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怎样计算固定天数后的日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)