我在DateTime转换中遇到问题。 我的输入是09/22/2011,我需要转换为20110922。
我尝试了下面的一个,但失败了。 选择CONVERT(VARCHAR(8),'09/22/2011',112)作为DateConv
答案 0 :(得分:3)
你走了:
SET DATEFORMAT mdy
SELECT CONVERT(VARCHAR(8), CAST('09/22/2011' as DATETIME) , 112) AS DateConv
如果您的输入实际上是一个像您所说的dateTime变量(但未在您的代码示例中显示),您可以将其简化为:
SELECT CONVERT(VARCHAR(8), @myDate , 112) AS DateConv
答案 1 :(得分:1)
这样可以解决问题:
select year('09/22/2011') * 10000 + month('09/22/2011') * 100 + day('09/22/2011')
答案 2 :(得分:0)
没有任何其他信息,SQL正在将'09 / 22/2011'解释为varchar,只是传递数据(忽略CONVERT
的样式参数)。如果您使用以下行:
SELECT CONVERT (VARCHAR (8), CAST ('09/22/2011' as DATETIME), 112) as DateConv
它应该按预期工作,因为它会将'09 / 22/2011'视为日期值。如果您从表中的列中获取日期,它就已经知道了类型,您不必担心表达式的CAST
部分,只需使用列名。