none
cast(SUBSTRING(欄位資料, 5, 10 ) as date)轉換日期失敗 RRS feed

  • 問題

  • SQL SERVER是2008

    欄位資料為字串類型, 例如 '台北市於2013/09/27...'

    使用SQL Server Management Studio執行查詢

    SELCET cast(SUBSTRING(欄位資料, 5, 10 ) as date)

    form 資料表名稱

    會閃一下出現查詢結果,然後出現"從字元字串轉換成日期及/或時間時,轉換失敗"

    請問是哪裡有錯誤嗎?

    謝謝你的協助

    2013年9月24日 上午 07:51

解答

  • select cast(SUBSTRING('台北市於2013/09/27...', 5, 10 ) as date)
    --2013-09-27

    select cast(SUBSTRING('台北於2013/09/27...', 5, 10 ) as date)
    --從字元字串轉換成日期及/或時間時,轉換失敗。

    從上面的比較即可得知,是可以轉換的,會發生錯誤是因為擷取出來的字串並非完整的日期字串格式,也就是說並非所有的欄位的內容,從第5個位置取出10個字元剛好都是yyyy/MM/dd的字串格式.

    2013年9月24日 下午 02:48

所有回覆

  • Take out cast, just get substring to ensure it returns date then add cast.
    2013年9月24日 下午 12:55
  • select cast(SUBSTRING('台北市於2013/09/27...', 5, 10 ) as date)
    --2013-09-27

    select cast(SUBSTRING('台北於2013/09/27...', 5, 10 ) as date)
    --從字元字串轉換成日期及/或時間時,轉換失敗。

    從上面的比較即可得知,是可以轉換的,會發生錯誤是因為擷取出來的字串並非完整的日期字串格式,也就是說並非所有的欄位的內容,從第5個位置取出10個字元剛好都是yyyy/MM/dd的字串格式.

    2013年9月24日 下午 02:48