现在我知道这个问题已被多次询问了,我已经完成了几十个答案,但似乎没有什么对我有用..我正在尝试将字符串转换为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
非常感谢任何帮助。
答案 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