SQL Server使用CONVERT()返回奇怪的日期

时间:2016-01-12 14:50:25

标签: sql sql-server tsql

CONVERT(VARCHAR(11),Enrollment.[Enroll End],106)

我认为上面应该返回像'2016年1月12日'这样的日期,而是返回像'15 Oca 2016'这样的日期。有谁知道为什么会这样?我原本以为可能语言设置不正确,但事实并非如此。

https://msdn.microsoft.com/en-us/library/ms187928.aspx表示106

  

1这些样式值返回非确定性结果。包括所有(yy)(没有世纪)样式和(yyyy)(有世纪)样式的子集。

我不确定上面是否与它有关 - 虽然我不完全确定它们的意义是什么意思

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

返回的值是非确定性的,因为它们依赖于用户连接的区域设置。换句话说,您可以从两台不同的计算机运行相同的精确代码并获得不同的结果 - 您无法仅根据参数确定结果。

确保将客户端计算机设置为英语区域设置。

答案 1 :(得分:0)

我希望这会有所帮助.. 如果当地环境不同。始终使用dateformat

set dateformat dmy

declare @date datetime = '12-01-2016'

select CONVERT(VARCHAR(11),@date,106)