010 数据库学习笔记 日期 + 时间 + 星期

发布时间 2023-06-09 10:15:35作者: sunwugang

星期获取操作

--设置语言,这个很重要,会导致不同的返回结果 (只需设置一次语言后,就可以重复调用 DATENAME)
 SET LANGUAGE N'Simplified Chinese' --简体中文
 --SET LANGUAGE N'English' --英文
 --SET LANGUAGE N'Korean'--韩文

--获取指定日期为星期几 GETDATE()当天日期,GETDATE()+1 下一天......
SELECT DATENAME(weekday,GETDATE())
--明天是周几
SELECT DATENAME(weekday,GETDATE()+2) --获取星期几
--昨天是周几
SELECT DATENAME(weekday,GETDATE()-1) 

方式二:

--设置语言,这个很重要,会导致不同的返回结果 (只需设置一次语言后,就可以重复调用 DATENAME)
SET LANGUAGE N'Simplified Chinese' --简体中文
--SET LANGUAGE N'English' --英文
--SET LANGUAGE N'Korean'--韩文

--返回一周的第几天,星期天对应 1 
select DATEPART(weekday,GETDATE()+2)

--返回星期几 
SELECT DATENAME(weekday,GETDATE())


--来个示例
declare
@week varchar(10),@weekname varchar(10)
--1.获取星期几参数一
--set @week=@@DATEFIRST 
--2.获取星期参数二
set @week=DATEPART(weekday,GETDATE()+2)
set @weekname=DATENAME(weekday,GETDATE()+2)

select @weekname as weekname,@week as weekno,
case @week 
when 1 then '星期日'
when 2 then '星期一'
when 3 then '星期二'
when 4 then '星期三'
when 5 then '星期四'
when 6 then '星期五'
when 7 then '星期六'
end as week2

获取本周、上周--对应日期及星期

-- sql server 获取上周几和本周几
-- @@DATEFIRST 每周以周几开始,周一是 1 ,周日是 7 ,有些机器默认是7,有些机器默认是1
SELECT @@DATEFIRST
-- 修改 @@DATEFIRST 的值
SET DATEFIRST 7
-- 查询当前每周是以周几开始,今天是一周的第几天
SELECT @@DATEFIRST as 'startday', DATEPART(dw,GETDATE()) as 'weekday'

-- 通过 WEEKDAY 和 @@DATEFIRST 联合计算,抹平 @@DATEFIRST 设置的差异

-- 上周
SELECT 
 CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) - 6, GETDATE()) ) as '上周一'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) - 5, GETDATE()) ) as '上周二'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) - 4, GETDATE()) ) as '上周三'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) - 3, GETDATE()) ) as '上周四'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) - 2, GETDATE()) ) as '上周五'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) - 1, GETDATE()) ) as '上周六'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) - 0, GETDATE()) ) as '上周日'

-- 本周
SELECT 
 CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) + 1, GETDATE()) ) as '本周一'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) + 2, GETDATE()) ) as '本周二'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) + 3, GETDATE()) ) as '本周三'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) + 4, GETDATE()) ) as '本周四'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) + 5, GETDATE()) ) as '本周五'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) + 6, GETDATE()) ) as '本周六'
,CONVERT(DATE, DATEADD(dd, -DATEPART (WEEKDAY ,GETDATE() + @@DATEFIRST - 1) + 7, GETDATE()) ) as '本周日'