0

L.LoanDueDate(これはsmalldatetime) の戻り値ufnARCUGetLatestProcessDate()(これは)と比較しintて、ローンの期日が最後の処理日を何日過ぎているかを確認しようとしています。

私は

式をデータ型 smalldatetime に変換する算術オーバーフロー エラー

エラーが発生し、それを理解できないようです。どんな助けでも役に立ちます。前もって感謝します。

CAST(L.LoanDueDate - CAST(CAST((SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AS VARCHAR(10)) AS smalldatetime) AS INT)
4

4 に答える 4

0

intをsmalldatetimeと比較することはできません。2つの日付を比較する必要があり、そのためにはdatediffを使用する必要があります。

于 2013-02-14T23:48:45.867 に答える
0

日付列を int にキャストできます。時間の部分を除いたおおよその (丸められた) 日付が int として表示されます。

編集:

これにより、比較するための数値として日付が得られます。

SELECT FLOOR(CAST(L.LoanDueDate as float)) -
(SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()) AS myValue
FROM ...

重要なのは、日付を数値ではなく数値にキャストすることです。

于 2013-02-14T23:54:06.070 に答える
0

私は問題を理解することができました。DATEDIFF に関する DigCamare のコメントは、比較できるように int を smalldatetime にキャストできるにもかかわらず、それが私がしなければならないことであることを思い出させてくれました。

DATEDIFF(d,L.LoanDueDate,CONVERT(smalldatetime,convert(varchar(10),(SELECT ProcessDate FROM ufnARCUGetLatestProcessDate()))))
于 2013-02-15T00:01:57.777 に答える
0

以下を追加したかっただけです。これは、単純な int から smalldatetime への変換に使用しているものです。それが他の人に役立つことを願っています。

(SELECT CAST(CAST(ProcessDate AS VARCHAR(10)) AS SMALLDATETIME) FROM ufnARCUGetLatestProcessDate()) 
于 2013-05-23T15:05:01.163 に答える