sql将int转换为datetime,溢出问题将表达式转换为数据类型varchar的算术溢出错误

时间:2014-08-21 13:27:11

标签: sql-server datetime int

我的值为20070807000000我试过CONVERT(datetime,convert(char(8),20070807000000)) 但我收到错误Arithmetic overflow error converting expression to data type varchar.

我能做些什么来达到日期时间?

3 个答案:

答案 0 :(得分:0)

这应该有效:

SELECT CAST(SUBSTRING(CAST(20070807000000 as varchar(20)),1,8) as datetime)

结果:August, 07 2007 00:00:00+0000

Demo

答案 1 :(得分:0)

你能试试吗,

select 
    CONVERT (datetime, convert(char(8), left(ltrim(20070807000000), 8)))

结果:2007-08-07 00:00:00.000

答案 2 :(得分:0)

额外的答案。您可以为输出提供日期时间格式:

SELECT  CONVERT(VARCHAR, CAST( SUBSTRING(CAST(20070807000000 AS VARCHAR),1,8) AS DATETIME ), 103)

结果:07/08/2007


SELECT  CONVERT(VARCHAR, CAST( SUBSTRING(CAST(20070807000000 AS VARCHAR),1,8) AS DATETIME ), 111)

结果:2007/08/07


有关日期格式的更多信息:CAST and CONVERT (Transact-SQL)