我在这里研究了所有类似的问题,但没有一个有效,这可能是什么问题?我想将 varchar 转换为日期
convert(date,substring(replace(ent.Value,' ',''),1,10),103) < '20140101'
返回错误 从字符串转换日期和/或时间时转换失败。
ent.Value 这里是类似“28/02/2014”的东西实际上它有效,当我输入类似的东西时
转换(日期,子字符串('28/02/2013',1,10),103)<'20140101'
,但它不能直接从表格中运行
谢谢
最佳答案
要将 varchar 转换为日期时间:CONVERT(Datetime, '28/02/2014', 103)
返回日期时间,如 February, 28 2014 00:00:00+0000
要将日期时间转换为 varchar:CONVERT(VARCHAR(10), datetime_field, 103)
返回类似 '28/02/2014'
的内容
在这两种情况下,您都无法将其与此类文本进行比较:'20140101'
您可以更改文本,使这两个信息都是 ISO 格式,如下所示:CONVERT(VARCHAR(10), CONVERT(Datetime, ent.Value, 103), 103) < '01/01/2014'
或者REPLACE(ent.Value,'/','') < '01012014'
但我认为比较 varchar 不好 => 你也可以这样做:CONVERT(Datetime, '20140101', 112) :
CONVERT(Datetime, ent.Value, 103) < CONVERT(Datetime, '20140101', 112)
所以你的两个字段都在日期时间中。例如:SQLFIDDLE DEMO
关于sql - 在sql中将varchar转换为datetime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23656606/