0

月と年だけを比較しようとしています。だから私はそれをvarcharに変換します。これは正しいです?

(case 
    when s."AccMonth" >= 1 and s."AccMonth" <= 12 
        then cast(rtrim(s.accmonth) + s.accyear AS varchar) end)
>=  
cast(month(s.InitialChargeDate) as varchar) + cast(year(s.InitialChargeDate) as varchar) 
  • accmonthaccyearはタイプですINT
  • InitialChargeDateタイプですDATE
4

2 に答える 2

2

おそらくそれを行うためのより良い方法は次のようなものでしょう:

s.AccMonth = MONTH(s.InitialChargeDate)
AND s.accyear = YEAR(s.InitialChargeDate)

注: 長さを指定せずに varchar にキャストする場合、デフォルトの長さは 1 です。これが結果に影響を与える可能性があります。

于 2012-12-20T04:25:25.560 に答える
0

varchar にキャストする代わりに、組み込み関数を使用する必要があります。

:

SELECT MONTH('2007-04-30T01:01:01.1234567 -07:00');

リターン 4

:

SELECT YEAR('2007-04-30T01:01:01.1234567-07:00');

リターンズ 2007

于 2012-12-20T04:24:02.117 に答える