SQL Server dateformat查询

时间:2015-10-06 14:20:14

标签: sql sql-server

我意识到您可以使用SET DATEFORMAT来改变解析字符串的方式,但以下是明确的:

SELECT CONVERT(DATE, '02Oct15')

是否有任何情况会将其解释为2002年10月15日?

2 个答案:

答案 0 :(得分:1)

世纪转换将成为35年来的一个问题(y2k50,有一个有趣的想法),但在那之前它是明确的。在第一部分中传递无效日期的任何尝试都会导致转换错误,而不是将第三部分视为日期而不是一年。

最后更改默认语言(更改默认日期格式)使用相同的转换(英国),或导致错误输出(意大利语)。仍然像其他人提到的那样,以这种格式存储日期是一个坏主意,但是除非我错过了我的猜测,这似乎是您从报告中导入数据,所以您可能无法控制它。无论如何希望有所帮助和好运。

答案 1 :(得分:0)

我无法让02Oct15成为October 15, 2002。但是,如果所有三个日期组件都是数字,则很容易进行投射:

SET DATEFORMAT YMD

SELECT CONVERT(DATE, '02Oct15'), -- October 2, 2015
       CONVERT(DATE, '021015')   -- October 15, 2002

我怀疑一旦您将自然语言引入字符串,SQL Server就会使用特定于文化的规则来转换日期组件。但最终,只有Microsoft了解SQL Server的字符串最新算法。