0

異なるデータベースの日付との差を計算する方法がたくさんあることは知っています。私の問題は、同じ SQL クエリを使用して SQL Server と DB2 の両方で機能する方法が必要なことです。

年間ベースで私は使用することができます

CURRENT_TIMESTAMP - [BIRTHDATE] AS AGETHISYEAR

しかし、私はまた、人の誕生日と現在の日付に応じて、10 進数形式、つまり 34,4 で人の年齢を知りたいと思っています。

SQL Server の列タイプ[BIRTHDATE]は でDATETIMEあり、DB2 の列タイプはDATEです。

フォーマットはYYYY-MM-DD

これを行う方法はありますか?

よろしく、 アルフレッド

4

1 に答える 1

1

両方のデータベースで機能する関数を作成できる唯一の方法はyear()、 、month()、およびを使用するday()か、関数を自分で作成することだと思います。2 つのデータベース間で日付関数にそれほど重複はありません。

たとえば、2 つの日付の間の完全な年を取得するには、次のように使用できます。

select (year(CURRENT_TIMESTAMP) - year(birthdate) +
        (case when month(CURRENT_TIMESTAMP) * 100 + day(CURRENT_TIMESTAMP) <
                   month(birthdate) * 100 + day(birthdate)
              then -1 else 0
         end)
        ) as AgeInYears

端数年は、はるかに複雑になります。もちろん、各データベースには、必要なものを取得するための独自のより合理的な方法があります。方法は異なります。

于 2014-10-24T12:43:55.857 に答える