我想将此格式PERIOD
(例如:20120701)中的字符串“yyyymmdd
”转换为SQLServer中的日期。
所以我使用了这样的转换函数:
CONVERT(DATETIME,PERIOD,102);
和
CONVERT(DATETIME,PERIOD,120);
但我得到了
SqlException:“将表达式转换为的算术溢出错误 数据类型datetime。“
这是整个查询,这还有其他错误吗?
"SELECT ACTUAL_N_WELLS, TARGET_N_WELLS, [YTD ACTUAL] AS YTD_ACTUAL, [YTD BUDGET] AS YTD_BUDGET FROM DASH_GL_DRILLING_PERF WHERE ASSET_NAME='Bu Hasa Asset' AND ( CONVERT(DATETIME,PERIOD,112) > (SELECT DATEADD(MONTH,-3,MAX(CONVERT(DATETIME,PERIOD,112))) from DASH_GL_DRILLING_PERF))");
这样做的正确方法是什么?
答案 0 :(得分:3)
答案 1 :(得分:2)
如果是日期格式问题,则会出现超出范围的错误,因为收到溢出错误会检查您是否使用整数
CONVERT(DATETIME, 20120701, 102) - overflow
CONVERT(DATETIME,'20120701',102) - ok
答案 2 :(得分:0)
select Convert(date,CONVERT(DATETIME,'20120701',102));
这将以日期格式转换给定时间段。
答案 3 :(得分:0)
declare @dt varchar(100)='20120701'
select convert(datetime,@dt)