迄今为止 SQL
Int to date in SQL
我尝试将看起来像 YYYYMMDD
(例如 20190430
)的列 [policyeffective_date]
转换为 SQL 服务器中的日期。
我尝试了一些在论坛上找到的解决方案,但 none 奏效了。目前我有以下代码和错误:
SELECT
CONVERT(DATETIME, policyeffective_date, 104) AS test
FROM
[DATAWAREHOUSE].[dbo].[blabla]
错误:
Arithmetic overflow error converting expression to data type datetime.
我也试过:
SELECT
CONVERT(DATE, CONVERT(NVARCHAR(8), policyeffective_date), 104)
FROM
[DATAWAREHOUSE].[dbo].[blabla]
错误:
Operand type clash: int is incompatible with date
感谢您的帮助
这适用于 SQL Server 2017:
select cast(cast(20190430 as nvarchar) as DATE) AS DateResult
输出:
DateResult
2019-04-30
您的列中似乎有错误数据。鉴于您得到的是 run-time 错误而不是 compile-time 错误,类型似乎是正确的。
最简单的解决方案是try_convert()
:
SELECT try_convert(datetime, policyeffective_date, 104) AS test
FROM [DATAWAREHOUSE].[dbo].[blabla];
但是要找到问题,你可以使用:
SELECT policyeffective_date
FROM [DATAWAREHOUSE].[dbo].[blabla]
WHERE try_convert(datetime, policyeffective_date, 104) IS NULL AND
policyeffective_date IS NOT NULL
我尝试将看起来像 YYYYMMDD
(例如 20190430
)的列 [policyeffective_date]
转换为 SQL 服务器中的日期。
我尝试了一些在论坛上找到的解决方案,但 none 奏效了。目前我有以下代码和错误:
SELECT
CONVERT(DATETIME, policyeffective_date, 104) AS test
FROM
[DATAWAREHOUSE].[dbo].[blabla]
错误:
Arithmetic overflow error converting expression to data type datetime.
我也试过:
SELECT
CONVERT(DATE, CONVERT(NVARCHAR(8), policyeffective_date), 104)
FROM
[DATAWAREHOUSE].[dbo].[blabla]
错误:
Operand type clash: int is incompatible with date
感谢您的帮助
这适用于 SQL Server 2017:
select cast(cast(20190430 as nvarchar) as DATE) AS DateResult
输出:
DateResult
2019-04-30
您的列中似乎有错误数据。鉴于您得到的是 run-time 错误而不是 compile-time 错误,类型似乎是正确的。
最简单的解决方案是try_convert()
:
SELECT try_convert(datetime, policyeffective_date, 104) AS test
FROM [DATAWAREHOUSE].[dbo].[blabla];
但是要找到问题,你可以使用:
SELECT policyeffective_date
FROM [DATAWAREHOUSE].[dbo].[blabla]
WHERE try_convert(datetime, policyeffective_date, 104) IS NULL AND
policyeffective_date IS NOT NULL