下面的代码返回什么?mssql服务器2012

下面的代码返回什么?mssql服务器2012,sql,sql-server,date,Sql,Sql Server,Date,我在钻研Somebody代码,但我不是sql方面的专家。谁能告诉我,下面的回报是什么 select DATEADD(day, DATEPART(weekday, GETDATE()) * - 1, GETDATE()) 一周中的哪一天还给你 星期日=1 星期一=2 等等 然后: select DATEADD(day, DATEPART(weekday, GETDATE()) * - 1, GETDATE()) 星期三的例子=4 加上(4天*-1)到今天=今天-4天用外行的话说,这返回“上

我在钻研Somebody代码,但我不是sql方面的专家。谁能告诉我,下面的回报是什么

select DATEADD(day, DATEPART(weekday, GETDATE()) * - 1, GETDATE())
一周中的哪一天还给你

  • 星期日=1
  • 星期一=2

  • 等等

然后:

select DATEADD(day, DATEPART(weekday, GETDATE()) * - 1, GETDATE())
星期三的例子=4


加上(4天*-1)到今天=今天-4天用外行的话说,这返回“上周六”。如果“今天”是星期六,它仍然返回上一个星期六之前的星期六

-- This will make it very apparent
-- Please note that the DatePart() function is language/settings dependant. So while on one server set up it may return "last Saturday", on others it may return "last Sunday"
select DATEADD(day, DATEPART(weekday, '11/01/2013') * -1, '11/01/2013')
select DATEADD(day, DATEPART(weekday, '11/02/2013') * -1, '11/02/2013')
select DATEADD(day, DATEPART(weekday, '11/03/2013') * -1, '11/03/2013')
select DATEADD(day, DATEPART(weekday, '11/04/2013') * -1, '11/04/2013')
select DATEADD(day, DATEPART(weekday, '11/05/2013') * -1, '11/05/2013')
select DATEADD(day, DATEPART(weekday, '11/06/2013') * -1, '11/06/2013')
select DATEADD(day, DATEPART(weekday, '11/07/2013') * -1, '11/07/2013')

答案取决于日期;)@gvee,它只是给了某人每天发布正确答案的机会!;)离题旗被误用了,太误用了,谢谢。如果你不介意的话,还有一个问题。星星做什么?(*)这是乘法。它将一个数字乘以负一,得出该数字的倒数。倒数是用来“倒数”到最后一个星期六。谢谢!这帮了大忙!请注意,该功能取决于语言/设置。因此,在一台服务器上设置时,它可能返回“上周六”,而在其他服务器上,它可能返回“上周日”。gvee,我在答案中添加了这个非常重要的注释。
-- This will make it very apparent
-- Please note that the DatePart() function is language/settings dependant. So while on one server set up it may return "last Saturday", on others it may return "last Sunday"
select DATEADD(day, DATEPART(weekday, '11/01/2013') * -1, '11/01/2013')
select DATEADD(day, DATEPART(weekday, '11/02/2013') * -1, '11/02/2013')
select DATEADD(day, DATEPART(weekday, '11/03/2013') * -1, '11/03/2013')
select DATEADD(day, DATEPART(weekday, '11/04/2013') * -1, '11/04/2013')
select DATEADD(day, DATEPART(weekday, '11/05/2013') * -1, '11/05/2013')
select DATEADD(day, DATEPART(weekday, '11/06/2013') * -1, '11/06/2013')
select DATEADD(day, DATEPART(weekday, '11/07/2013') * -1, '11/07/2013')