datename sql函数未显示正确的日期
例如,我上网看到2011年11月3日是星期四,2011年11月4日是星期五。我使用了这个函数datename sql函数未显示正确的日期,sql,sql-server,sql-server-2008,tsql,sql-server-2012,Sql,Sql Server,Sql Server 2008,Tsql,Sql Server 2012,例如,我上网看到2011年11月3日是星期四,2011年11月4日是星期五。我使用了这个函数 在我的服务器上选择datename(dw,04-11-2011),它显示的是星期六而不是星期五。如何将其设置为正确显示?或者我错过了什么 编辑: 谢谢大家的投入。然而,你们中的大多数人指出了我使用的格式,而不是它设置不正确的事实。有人发布了(并删除了他的评论)此链接: 因此,我使用了设置日期优先1,为了获得11月4日,我使用了选择日期名称(dw,'2011-11-04')使用ISO标准日期格式,这样您就
在我的服务器上选择datename(dw,04-11-2011)
,它显示的是星期六而不是星期五。如何将其设置为正确显示?或者我错过了什么
编辑:
谢谢大家的投入。然而,你们中的大多数人指出了我使用的格式,而不是它设置不正确的事实。有人发布了(并删除了他的评论)此链接:
因此,我使用了
设置日期优先1
,为了获得11月4日,我使用了选择日期名称(dw,'2011-11-04')
使用ISO标准日期格式,这样您就知道您获得的日期。要么:
select datename(dw, '2011-04-11')
或
(或者,由于上述格式受一个国际化设置的约束,可能会被误解,因此可以省略连字符,以便它们以YYYYMMDD格式明确显示。)
另外,用单引号将日期常量括起来。1使用单双引号表示日期值 2在SQL Server中,使用明确的日期格式YYYYMMDD或YYYY-MM-DDTHH:MM:SS
select datename(weekday, '20110411') as day_name
2011年11月4日是11月4日还是4月11日?更好地使用无歧义的数据格式(“2011-11-04”应该可以)。2011年4月11日是星期一。2011年11月4日是星期五。而且(再看一次)你们错过了日期常数的引号。目前,您正在搜索整数4-11-2011=-2018的datename()。如果您想知道为什么这是星期六:SQL Server中的datetime类型基于1900年1月1日。如果您提供一个整数作为日期——在本例中为2018年——它将被视为与该日期相差的天数。2018天前(因为它是负的,所以你要倒转时间)1900年1月1日是1894年6月23日,这是一个星期六。您的新问题是,您可以通过尝试
select cast('04-11-2011'作为datetime)
来判断您的日期字符串被解释为4月11日,而不是11月4日。是的,在本例中是“用单引号括起日期常量”。否则就是2018年,也就是星期六谢谢你,但是为了让这个工作顺利进行,有这个问题的人也必须检查@viorelmunteanudatename()
返回一个字符串。它受到国际化的影响,但这只是“Sunday”是否拼写为“Dimanche”、“Sonntag”、“Domenica”等等。您将其与返回数字的datepart()
相混淆。
select datename(weekday, '20110411') as day_name