Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
datename sql函数未显示正确的日期_Sql_Sql Server_Sql Server 2008_Tsql_Sql Server 2012 - Fatal编程技术网

datename sql函数未显示正确的日期

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标准日期格式,这样您就

例如,我上网看到2011年11月3日是星期四,2011年11月4日是星期五。我使用了这个函数

在我的服务器上选择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年,也就是星期六谢谢你,但是为了让这个工作顺利进行,有这个问题的人也必须检查@viorelmunteanu
datename()
返回一个字符串。它受到国际化的影响,但这只是“Sunday”是否拼写为“Dimanche”、“Sonntag”、“Domenica”等等。您将其与返回数字的
datepart()
相混淆。
select datename(weekday, '20110411') as day_name