一开始解决这个问题的时候就是简单的上网搜了一下,于是第一份错误的语句是这样的:

set DATEFIRST 1
declare @wkfst varchar(10)
set @wkfst = convert(date, dateadd(wk,datediff(wk,0,getdate()),0),120)
select @wkfst


乍一看没有问题,但即使我设置了一周的第一天为周一,在datediff这个函数里,他一周的第一天仍然是周日,所以当我选择一个周日为基数时,结果会有误。

set DATEFIRST 1
declare @wkfst varchar(10)
set @wkfst = convert(date, dateadd(wk,datediff(wk,0,getdate()-4),0),120)
select @wkfst


可以看到,上周日对应的周一,还是9月20日,这是因为datediff函数他一周的第一天是周日,一周为周日到周六,他们对应的周数是一样的。

于是自己修改了写法:

set DATEFIRST 1
declare @wkfst varchar(10)
set @wkfst = convert(date, iif(datepart(w,getdate()-4)=7,dateadd(wk,datediff(wk,0,getdate()-4)-1,0),dateadd(wk,datediff(wk,0,getdate()-4),0)),120)
select @wkfst


结果就和我们想要的一致了。

在网上搜到另外两种写法,不需要set datefirst 1

-- 一周的第一天
SELECT DATEADD(DAY,1-DATEPART(weekday,GETDATE()),GETDATE())--一周的最后一天
SELECT DATEADD(DAY,7-DATEPART(WeekDay,GETDATE()),GETDATE())

仅仅获取当天是星期几,再根据当天与周一,周日相差的天数来计算,也是十分方便的

参考:https://www.jb51.net/article/109946.htm

sql server 获取本周周一相关推荐

  1. php sql查看本月记录,SQL Server 获取本周,本月,本年等时间内记录

    datediff(week,zy_time,getdate())=0 //查询本周 datediff(month,zy_time,getdate())=0 //查询本月 本季:select * fro ...

  2. calendar获取本周一的日期_Java Calendar 获取本周周一和周日代码

    Java Calendar 获取本周周一和周日代码 /** * 得到本周周一 * * @return yyyy-MM-dd */ public static String getMondayOfThi ...

  3. Sql Server获取数据库名,表信息,字段信息,主键信息等

    --Sql Server获取数据库名,表信息,字段信息,主键信息等--获取所有数据库名: SELECT name FROM master..sysdatabases WHERE name NOT IN ...

  4. sql server 获取本机的ip地址

    --sql server 获取本机的ip地址 -- 其实就是使用xp_cmdshell 来获取信息,然后对信息进行筛选. --开启xp_cmdshell exec sp_configure 'show ...

  5. python获取本周周一或周末日期

    获取本周周一日期 用timedelta函数做一个小算法: from datetime import datetime, timedeltadef this_monday(today):"&q ...

  6. js 获取本周 周一-周日的日期,周一周日问题特殊处理

    需求获取本周周一-周日的日期 var now = new Date();var nowTime = now.getTime() ;var day = now.getDay();var oneDayTi ...

  7. 使用SQL Server 获取插入记录后的ID(自动编号)

    使用SQL Server 获取插入记录后的ID(自动编号) jingxian 本篇文章是对使用SQL Server获取插入记录后的ID(自动编号)的方法进行了详细的分析介绍,需要的朋友参考下 最近在开 ...

  8. 使用SQL Server 获取插入记录后的自增ID(自动编号)

    http://www.jb51.net/article/39029.htm 本篇文章是对使用SQL Server获取插入记录后的ID(自动编号)的方法进行了详细的分析介绍,需要的朋友参考下 最近在开发 ...

  9. sql server 获取当前日期前12个月的月份sql 语句

    sql server 获取当前日期前12个月的月份sql 语句 select convert(varchar(7),dateadd(mm,number,dateadd(month,-11,getdat ...

最新文章

  1. C语言100个经典的算法
  2. NOI2020 前最后的日子
  3. 【Java】Java实现 JSON 的组装和解析
  4. 安装python要注意什么_安装python注意事项
  5. Python3之数据类型
  6. 2019年7月28日解决战网BLZBNTBNA00000005BLZBNTBNA00000006BLZBNTBTS0000005DBLZBNTBTS0000004A 007D0 008A4 00840
  7. 服务器安装动易组件,动易SiteWeaver6.8安装方法
  8. java源码医药医疗器械ERP系统医药进销存医药erp微信小程序商城
  9. Oracle LOB 详解
  10. 文件比较命令(comp)
  11. STM32 HAL库函数学习 UART篇
  12. 操作系统文件系统练习题
  13. ttl传输中过期怎么解决_TTL在运输错误和解决方案中过期
  14. 【计划表合集】学习计划表/时间表/打卡表/理财表/读书记录/生活计划表等合集
  15. Centos7.6挂载IPSAN【iscsi存储】并应用为LVM分区
  16. 转一篇十几年前的旧文,与各位共赏之
  17. 交易老手交易老手的最终境界:坚持做正确的事情,不要在乎一笔输赢
  18. 玩转Zadig之(一)helm生产环境部署
  19. 3D游戏(7)——模型与动画
  20. oracle数据库时,Oracle数据库夏令时问题解答

热门文章

  1. C++学习——基于binance的AS做市模型
  2. 东华大学计算机等级考试合格证书,内蒙古工业大学计算机等级考试合格证书
  3. for(Map.EntryString, String entry:params.entrySet())
  4. 编写一个C程序,用getchar函数读入两个字符c1,c2,然后分别用putchar函数和printf函数输出这两个字符.
  5. Omnipeek空口抓包(2):扫描无线网络
  6. 阿里云企业邮箱代理商:foxmal邮件发送RCPT错误怎么办?
  7. cml sml区别_cml和sml的区别
  8. 苹果cmsv10好看的七色中文二开视频免费模板
  9. 券商创设认购权证分析
  10. kafka 命令重新启动_命令行基础知识:关闭和重新启动