SQL中的最新数据

时间:2019-07-19 22:57:59

标签: sql sql-server sql-convert

我尝试将看起来像[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与日期不兼容

谢谢您的帮助

2 个答案:

答案 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