0

我有 2 个 dateTime 数据类型的日期字段。

一种称为 PhaseEnd,另一种称为 PhaseStart。

我们想从 PhaseEnd 中减去 PhaseStart 以获得两者之间的月数。

当我运行以下查询时:

SELECT (CASE WHEN PhaseEnd IS NOT NULL THEN round((PhaseEnd - PhaseStart)/30,1)
       ELSE round((getdate() - PhaseStart)/30,1) END) Months from tblT_PHASES

我明白了Implicit conversion from data type datetime to int is not allowed. Use the CONVERT function to run this query.

知道如何解决这个问题吗?

在此处输入图像描述

4

1 回答 1

1

使用日期差异

select
    case
        when PhaseEnd is not null then
            round(datediff(day, PhaseStart, PhaseEnd)/30,1)
        else
            round(datediff(day, PhaseStart, getdate())/30,1)
    end as Months
from tblT_PHASES

或者

select
   round(
       datediff(day, PhaseStart, isnull(PhaseEnd, getdate())) / 30
   , 1) as Months
from tblT_PHASES
于 2013-08-09T13:36:37.443 回答