我尝试将看起来像[policyeffective_date]
(例如YYYYMMDD
)的列20190430
转换为SQL Server中的日期。
我尝试了一些在论坛上找到的解决方案,但是没有一个有效。目前,我有以下代码和错误:
SELECT
CONVERT(DATETIME, policyeffective_date, 104) AS test
FROM
[DATAWAREHOUSE].[dbo].[blabla]
错误:
将表达式转换为数据类型为datetime的算术溢出错误。
我也尝试过:
SELECT
CONVERT(DATE, CONVERT(NVARCHAR(8), policyeffective_date), 104)
FROM
[DATAWAREHOUSE].[dbo].[blabla]
错误:
操作符类型冲突:int与日期不兼容
谢谢您的帮助
答案 0 :(得分:1)
您似乎在该列中有错误的数据。鉴于您遇到的是运行时错误而不是编译时错误,因此这些类型似乎正确。
最简单的解决方案是i8
:
try_convert()
但是要找到问题,可以使用:
SELECT try_convert(datetime, policyeffective_date, 104) AS test
FROM [DATAWAREHOUSE].[dbo].[blabla];
答案 1 :(得分:0)
这在SQL Server 2017中对我有用:
select cast(cast(20190430 as nvarchar) as DATE) AS DateResult
输出:
DateResult
2019-04-30