0

この質問が何度か行われ、何十もの回答を試しましたが、何もうまくいかないようです。SQLで文字列を日時に変換しようとしていますが、次のエラーが発生します。

Arithmetic overflow error converting expression to data type datetime.

これは私が実行しようとしているクエリです:

SELECT MessageText, 
       CONVERT(datetime,SUBSTRING(MessageText, CHARINDEX('(', MessageText)+1,                   
       CHARINDEX(')', MessageText) - 
       CHARINDEX('(', MessageText)-1)) AS TourTimeStamp, 
       TIMESTAMP
FROM tblMessageLog
WHERE MessageText LIKE 'Tour run timestamp%for tour%has been%'
ORDER BY TIMESTAMP DESC

したがって、にMessageTextは、探しているタイムスタンプがあり(TimeStamp列は実際にはメッセージログエントリのタイムスタンプにすぎません...)、サブストリングを使用してこれを正常に取得できます。

この部分文字列(TourTimeStamp)の形式は次のとおりですdd/mm/yyy hh:mm:ss25/02/2012 20:55:13

どんな助けでも大歓迎です。

4

1 に答える 1

0

これはMSSQLServerだと思います。

形式を指定する必要があります:これを試してください:

Select 
  MessageText, 
  CONVERT(
    datetime,
    SUBSTRING(
      MessageText, 
      CHARINDEX('(', MessageText) + 1, 
      CHARINDEX(')', MessageText) - CHARINDEX('(', MessageText) - 1),
    103) 
  AS TourTimeStamp, 
  Timestamp 
FROM 
  tblMessageLog 
WHERE 
  MessageText LIKE 'Tour run timestamp%for tour%has been%' 
ORDER BY TimeStamp DESC

サポートされている形式のリストについても、こちらをご覧ください。

于 2013-03-19T10:52:40.617 に答える