2015-04-22 28 views
0

我必須計算幾個日期之間的時間,但這個字段不是日期類型,這個字段是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' 

我有錯誤:

Conversion failed when converting date and/or time from character string.

我不知道這是爲什麼,該值是相同的,任何人都可以幫我請?它將不勝感激。

+0

您使用的是什麼sql-server版本?這在我的2008 R2版本中適用於我。另外你的語言設置是什麼? –

+0

您可能在表 –

+0

中的數據不正確您的默認語言是什麼?西班牙? – Jaco

回答

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 

謝謝!! 最好的問候

0

我認爲你的行數據已損壞。值不一樣。在桌上你有沒有時間的時間。試試這個:

SELECT CONVERT(char(8), CAST(SUMILLA_HDR1 + ':00' AS DATE),112) 
FROM FLUJO_CS 
WHERE CODIGO = 'N050044 

'

+0

謝謝喬治,這些都是相同的價值觀,但似乎當我複製和粘貼他們,秒被ommited,但在數據庫中是相同的值 –

0

你應該先轉換日期:

SELECT CAST(CONVERT(char(50), '07/01/2015 10:58:38',112) AS DATE) 

鑄造日期作爲字符串(無轉換)可導致不同的日期格式取決於用戶的語言設置。

相關問題