为了账号安全,请及时绑定邮箱和手机立即绑定

获取SQL Server中的第一天

获取SQL Server中的第一天

守候你守候我 2019-08-02 16:36:38
获取SQL Server中的第一天我试图按周分组记录,将汇总日期存储为一周的第一天。但是,我用于舍入日期的标准技术似乎在几周内没有正常工作(尽管它确实存在了几天,几个月,几年,几个季度以及我应用它的任何其他时间范围)。这是SQL:select "start_of_week" = dateadd(week, datediff(week, 0, getdate()), 0);返回2011-08-22 00:00:00.000,这是星期一,而不是星期日。选择@@datefirst返回7,这是星期日的代码,所以据我所知,服务器设置正确。通过将上面的代码更改为:我可以轻松地绕过这个:select "start_of_week" = dateadd(week, datediff(week, 0, getdate()), -1);但事实上,我必须做出这样的例外让我有点不安。此外,如果这是一个重复的问题,请道歉。我发现了一些相关问题,但没有一个专门解决这个问题。
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

这对我很有用:

创造功能[dbo]。[StartOfWeek](
  @INPUTDATE DATETIME)退货日期如开始
  - 这在功能上不起作用。
  -  SET DATEFIRST 1  - 将星期一设置为星期的第一天。
  DECLARE @DOW INT  - 存储星期几
  SET @INPUTDATE = CONVERT(VARCHAR(10),@ INPUTDATE,111)
  SET @DOW = DATEPART(DW,@ INPUTDATE)
  - 星期一的魔术转换为1,星期二为2,等等。
  - 不管SQL服务器对本周开始的看法。
  - 但是在这里我们将星期日标记为0,但我们稍后会解决这个问题。
  SET @DOW =(@ DOW + @@ DATEFIRST  -  1)%7
  IF @DOW = 0 SET @DOW = 7  - 修复周日
  返回DATEADD(DD,1  -  @ DOW,@ INPUTDATE)结束


查看完整回答
反对 回复 2019-08-02
  • 3 回答
  • 0 关注
  • 590 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信