0

それぞれ dateTime データ型の 2 つの日付フィールドがあります。

1 つは PhaseEnd と呼ばれ、もう 1 つは PhaseStart です。

PhaseEnd から PhaseStart を減算して、2 つの間の月数を取得します。

次のクエリを実行すると:

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

datediffを使用する

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 に答える