Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在SQLServer中将字符串转换为日期,算术溢出_Sql_Sql Server - Fatal编程技术网

在SQLServer中将字符串转换为日期,算术溢出

在SQLServer中将字符串转换为日期,算术溢出,sql,sql-server,Sql,Sql Server,我想将此表单中的字符串“PERIOD”yyyymmdd(例如:20120701)转换为SQLServer中的日期。 所以我使用了如下转换函数: CONVERT(DATETIME,PERIOD,102); 及 但是我有一个 SqlException:“将表达式转换为时出现算术溢出错误” 数据类型datetime。“ 这就是整个问题,还有其他错误吗 正确的方法是什么?既然是yyyymmdd,您需要 CONVERT(DATETIME, PERIOD, 112) 退房因为是yyyymmdd,您需要

我想将此表单中的字符串“
PERIOD
yyyymmdd
(例如:20120701)转换为SQLServer中的日期。 所以我使用了如下转换函数:

CONVERT(DATETIME,PERIOD,102);

但是我有一个

SqlException:“将表达式转换为时出现算术溢出错误” 数据类型datetime。“

这就是整个问题,还有其他错误吗


正确的方法是什么?

既然是yyyymmdd,您需要

CONVERT(DATETIME, PERIOD, 112)

退房

因为是yyyymmdd,您需要

CONVERT(DATETIME, PERIOD, 112)

签出

如果是日期格式问题,您将得到一个超出范围的错误,因为您得到一个溢出错误,请检查您没有使用整数

CONVERT(DATETIME, 20120701, 102) - overflow
CONVERT(DATETIME,'20120701',102) - ok

如果它是一个日期格式问题,你会得到一个超出范围的错误,因为你得到一个溢出错误检查你没有使用整数

CONVERT(DATETIME, 20120701, 102) - overflow
CONVERT(DATETIME,'20120701',102) - ok
这将以日期格式转换给定的期间

declare @dt varchar(100)='20120701'
select convert(datetime,@dt)

这将以日期格式转换给定的时间段。

先生,问题仍然存在,我已对问题进行了编辑,以包含整个查询。。谢谢..先生,问题仍然存在,我已经编辑了问题以包含整个查询。。谢谢..谢谢先生!这确实是问题所在,不是vchar。当数据类型更改为vchar时,问题得到解决。谢谢,先生!这确实是问题所在,不是vchar。当数据类型更改为vchar时,问题得到了解决。
declare @dt varchar(100)='20120701'
select convert(datetime,@dt)