关于SQL Server星期问题的处理

本文介绍两种在SQL Server中调整一周起始日的方法,确保项目开发过程中周几的表示符合本地习惯,避免与西方国家标准的冲突。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在中学的时候我们就知道,西方国家每周的第一天是周日,而在我们国家,通常认为一周的第一天是周一,这样在项目开发的过程中就会遇到类似的冲突,现在提供两种解决方法,供大家参考,如果有更好的方法,欢迎回帖讨论

由于在实际项目开发中,在存入星期几的时候,通常只存给定日期是一周的第几天(即阿拉伯数字),而不是存入“星期1”或者“Monday"

所以今天提供的方法只返回当前日期是本周的第几天,

当前是周五

SELECT DATEPART(weekday,GETDATE())   返回值是6

如果想要返回 5

方法一:

(DATEPART(WEEKDAY,GETDATE())+5)%7+1

方法二:

SET DATEFIRST 1 --设定每周的开始日期,该语句表示设定一周的第一天是“星期一"

SELECT DATEPART(weekday,GETDATE()) 

注意:

1、SET DATEFIRST num 中的num取值范围 1<=num<=7

2、SET DATEFIRST num的执行结果是修改了SQL Server默认的一周的开始时间,设定后一直生效至下一次修改设定,

建议:

如果确有上述类似需求,需要按照我们自己的习惯以周一为每周第一天,请根据项目的实际情况选择

个人意见:如果项目是定制的,即数据库只有一个(外加一个备份)建议用方法2,这样不用每次都计算

如果项目不是定制的,即有可能有多个客户及数据库,建议使用方法1,因为这样就不会由于忘记修改设定而导致数据对不上

**************************************************************新人一枚,如有不当之处,望多多指教,请勿吐脏***************************************************
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值