2013-08-30 161 views
0

內的兩個更多鈔票的日期格式我有一個嘗試當@FechaRecepcion與預期格式Aug 30, 2013 20:10:44改建工程到達轉換如何編寫處理存儲過程

SET @FRecepcion = CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),107 
    )+ ' ' + 
     CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),108 
    ) 
IF (@FRecepcion = NULL) 
BEGIN 
    SET @FRecepcion = '' 
END 

一個MS SQL腳本,SQL腳本。

但在其他計算機@FechaRecepcion測試此腳本時到達這樣2013-08-30 20:10:44.000和轉換失敗

我怎麼能寫能處理這兩種情況下SQL邏輯?或者解決這個問題的最好方法是什麼?

+2

真的時間是'24:12:00.000'還是'00:12:00.000'?如果'24',那就是問題所在。 – JohnLBevan

+0

返回的錯誤消息是什麼? –

回答

1

在我更新示例日期2013-08-30 24:12:00.0002013-08-30 00:12:00.000您提供的查詢工作後,此工作適用於我。我在SQLFiddle上進行了驗證。對於DATETIME,24不是有效的小時。它應該可能是00(也可能是日期的一部分增加1)。

你需要找出爲什麼一些計算機返回24小時而不是有效小時。根據小時部分爲何設置的原因,您可能會解析輸入字符串,然後根據需要更新日期。

實施例與預期日期格式(2013年8月30日20時10分44秒):

SET @FechaRecepcion = 'Aug 30, 2013 20:10:44' -- setup test data 

SET @FRecepcion = CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),107 
    )+ ' ' + 
     CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),108 
    ) 

實施例與意想不到日期格式(2013年8月30日20時10分:44.000),但使用相同的腳本解析日期值:

SET @FechaRecepcion = '2013-08-30 20:10:44.000' -- setup test data 

SET @FRecepcion = CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),107 
    )+ ' ' + 
     CONVERT(
      VARCHAR(30),CAST(@FechaRecepcion AS DATETIME),108 
    ) 

編輯:更新例如查詢到的EXA匹配這是在原始問題中提供的。

+0

亞當。關於24小時,這是一個錯誤。這兩種格式的代碼是否都是單個SCRIPT? –

+0

是的,當我用這兩種格式嘗試它時,它工作。我更新了我提供的示例,以便它與您的問題中的腳本相匹配。 –

+0

亞當斯,謝謝,但我想了解,如果第二種格式的「hd:yyyy」格式爲107,而第二種格式的「hh:mm:ss」不符合該格式,那麼這項工作是如何進行的,因爲在「yyyy- mm-dd hh:mm:ss.mmm「? –