sql周的第一天
‘壹’ sql Server 怎么获得本周内: 周六为第一天 周五为第最后一天
select datepart(w,getdate()+1) --星期六返回1,星期五返回7。
select convert(varchar(10),getdate()-datepart(w,getdate()+1)+1,120) --获取本周第一天,2013-4-20星期六,返回2013-04-20,是第一天。
select convert(varchar(10),getdate()-datepart(w,getdate()+1)+8,120) --获取本周最后一天,2013-4-20星期六,返回2013-04-27,是第一天。
‘贰’ 使用SQL语句取相关日期(当月天数,当月第一天,当月最后一天,本年最后一天,当月第一个星期)
--当月天数
select day(dateadd(ms,-3,DATEADD(m, DATEDIFF(m,0,getdate())+1,0)))
---当月第一天
select dateadd(d,-day(getdate())+1,getdate())
---当月最后一天
select dateadd(d,-day(getdate()),dateadd(m,1,getdate()))
--本年最后一天
select dateadd(d,-day(getdate()),dateadd(m,12,getdate()))
--当月第一个星期一
SELECT DATEADD(wk, DATEDIFF(wk, '', DATEADD(dd, 6 - DAY(getdate()), getdate())), '')
‘叁’ sql 如何获取当前时间,所属周的开始时间和结束时间,周一为一个星期的第一天
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()) 星期日日期
‘肆’ SQL如何获得本季度第一天,一年的第一天,本月的最后一天
你好,以下是获取年,季度,天日期的所有方式:
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,@dt)
‘伍’ sql 配置变量为当月第一天日期
可以利用sql函数实现,首先获取传递过来的日期中的天数,然后减去(天数-1),即可得到第一天日期。
例如mysql:DATE_SUB($[yyyy-mm-dd], INTERVAL (DAY($[yyyy-mm-dd]) -1) DAY)
大体思路是这样的,不同的数据库sql日期函数略有不同,自己调试下吧。
‘陆’ 第四十九章 SQL函数 DAYOFWEEK
SQL函数 DAYOFWEEK用于返回日期表达式的整型星期几。默认情况下,一周的第一天是星期天,返回值对应于从星期天开始的天数,范围为0到6。日期表达式可以是日期整数、$HOROLOG或$ZTIMESTAMP值、ODBC格式的日期字符串或时间戳。时间戳可以是64位有符号整数或yyyy-mm-dd hh:mm:ss.fff格式,时间部分不被评估。要返回星期几的名称,可以使用DAYNAME、DATENAME或TO_DATE函数。也可以通过DATEPART函数获取星期几信息。使用DAYOFWEEK()方法从ObjectScript调用此函数。
日期验证包括对输入值的检查,若未通过检查则返回空字符串。默认情况下,一周的第一天是周日。可以通过设置SET ^%SYS("sql","sys","day of week")=n来更改一周的第一天,其中n值为1到7。若设置星期一为一周的第一天,则周三日期表达式返回3。若要恢复默认值,可设置^%SYS("sql","sys","day of week")=7。通过SET ^%SYS("sql","sys","day of week",namespace)=n更改命名空间的每周第一天,其中n为1到7。一旦在命名空间级别设置一周的第一天,通过指定^%SYS("sql","sys","day of week")=n更改系统范围的设置,对命名空间无影响。若要恢复更改命名空间的默认第一天,使用kill ^%SYS("sql","sys","day of week",namespace)。
支持ISO 8601标准用于确定星期、星期和其他日期设置。ISO 8601标准主要在欧洲国家使用,从星期一开始计算一周的天数。通过设置 ^%SYS("sql","sys","week ISO8601")=1启用ISO 8601标准。若禁用,则设置为0。若ISO 8601周被激活,且周的天数未定义或设置为默认值,则ISO 8601标准将覆盖默认值。若day of week设置为任何其他值,则DAYOFWEEK将覆盖周ISO8601。
下面的例子展示了两个select项在不同设置下返回数字5,即指定日期 February 22, 2018 对应于星期四。所有select-item返回当前日期对应的整数。$ZTIMESTAMP返回UTC时间,其他时间表达式返回本地时间,这可能影响DAYOFWEEK值。以下示例演示了如何更改命名空间的一周的第一天,以及如何应用ISO 8601标准的默认星期几和星期几。程序测试是否具有%SYS或user命名空间的特定于命名空间的每周第一天设置,并在检测到时中止以阻止更改这些设置。
‘柒’ SQL怎么查询当前周的第一天(周一),跟当前周的最后一天(周日)
select convert(varchar(10),DATEADD(dd, -(CASE when datepart(weekday,'2018-02-25') = 1 Then 8 ELSE datepart(weekday,'2018-02-25')END -2), '2018-02-25'),120)as "第一天(周一)",
convert(varchar(10),DATEADD(dd, (8-CASE when datepart(weekday,'2018-02-25') = 1 Then 8 ELSE datepart(weekday,'2018-02-25')END), '2018-02-25'),120)as "最后一天(周日)"