我意识到您可以使用SET DATEFORMAT
来改变解析字符串的方式,但以下是明确的:
SELECT CONVERT(DATE, '02Oct15')
是否有任何情况会将其解释为2002年10月15日?
答案 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的字符串最新算法。