如何将已转换的数字字段转换为日期类型?

时间:2020-08-07 19:12:15

标签: sql sql-server

我需要将下面的Prelim Date字段转换为日期类型。

select
       [Initial Rated Date/Time],
       floor(convert(numeric(10,2),[Initial Rated Date/Time])-.08333333) as 'Prelim Date'
from [AX2cTest].[dbo].[AAATRANSPORTTABLE_V]

样本数据:

Initial Rated Date/Time   Prelim Date
2020-08-03 02:01:00.000     44046
2020-08-03 01:59:00.000     44045

我需要这个:

Initial Rated Date/Time    Prelim Date
2020-08-03 02:01:00.000     2020-08-03
2020-08-03 01:59:00.000     2020-08-02

我尝试了这两个查询,但收到以下错误:

select
       [Initial Rated Date/Time],
       convert(date,floor(convert(numeric(10,2),[Initial Rated Date/Time])-.08333333)) as 'Prelim 
       Date'
from [AX2cTest].[dbo].[AAATRANSPORTTABLE_V]

错误:不允许从数字类型的数据类型到日期的明确转换。

with Prelim_Rpt_Date_CTE (Prelim_Rpt_Date)  as (select
       floor(convert(numeric(10,2),[Initial Rated Date/Time])-.08333333)
       from [AX2cTest].[dbo].[AAATRANSPORTTABLE_V])

select convert(date,Prelim_Rpt_Date)
from Prelim_Rpt_Date_CTE;

错误:不允许从数字类型的数据类型到日期的明确转换。

如何解决此错误?

1 个答案:

答案 0 :(得分:2)

您似乎想要这样的东西:

select convert(date, dateadd(hour, -2, [Initial Rated Date/Time]))

我不确定为什么要让数字,整数和浮点数参与简单的日计算。