我必须计算几个日期之间的时间,但这个字段不是日期类型,这个字段是varchar,所以我必须转换它们。 例如,我有这个值:
CODIGO SUMILLA_HDR1 SUMILLA_HDR2
N050044 07/01/2015 10:58 09/01/2015 12:32:36
N050044 07/01/2015 10:58 09/01/2015 11:58:10
如果我用句子转换值:
SELECT CONVERT(char(8), CAST('07/01/2015 10:58:38' AS DATE),112)
我有:20150701 =>这对我来说没问题。
但如果我尝试下一个:
SELECT CONVERT(char(8), CAST(SUMILLA_HDR1 AS DATE),112)
FROM FLUJO_CS
WHERE CODIGO = 'N050044'
我有错误:
从字符串转换日期和/或时间时转换失败。
我不知道为什么会这样,价值观是一样的,有人可以帮我吗? 我们将不胜感激。
答案 0 :(得分:0)
我认为你的行数据已损坏。值不一样。在表中你有时间没有秒。试试这个:
SELECT CONVERT(char(8), CAST(SUMILLA_HDR1 + ':00' AS DATE),112)
FROM FLUJO_CS
WHERE CODIGO = 'N050044
'
答案 1 :(得分:0)
您应首先转换日期:
SELECT CAST(CONVERT(char(50), '07/01/2015 10:58:38',112) AS DATE)
将日期转换为字符串(不转换)可能会导致不同的日期格式,具体取决于用户的语言设置。
答案 2 :(得分:0)
我用这个转换了价值:
CONVERT(DATE,CONVERT(NVARCHAR(10), SUMILLA_HDR1),103)
例如,如果我想要从某个日期开始的数字天数,我就有这个:
SELECT CONVERT(NVARCHAR(10), SUMILLA_HDR1), CONVERT(DATE,CONVERT(NVARCHAR(10), SUMILLA_HDR1),103),
DATEDIFF(DAY, GETDATE(), CONVERT(DATE,CONVERT(NVARCHAR(10), SUMILLA_HDR1),103))
FROM FLUJO_CS
WHERE CODIGO = 'N050044'
AND SUMILLA_HDR1 IS NOT NULL
谢谢!! 最好的问候