在SQL中将字符串转换为DateTime

时间:2013-03-19 10:25:42

标签: sql datetime

现在我知道这个问题已被多次询问了,我已经完成了几十个答案,但似乎没有什么对我有用..我正在尝试将字符串转换为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:ss,例如25/02/2012 20:55:13

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为这是MS SQL Server。

您必须指定格式: 试试这个:

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

look here for list of supported formats