0

私はうまく機能する今日の日付から人の生年月日を計算する次のコードを持っています

    SELECT application.applicationLastName, application.applicationFirstName, application.applicationDoB, 
ROUND(DATEDIFF(NOW(), applicationDoB) / 365.2425,1) AS age, application.applicationID, application.applicationAcknowledged, application.applicationContacted, application.applicationDate
FROM application
ORDER BY application.applicationDate ASC 

しかし、当月の 1 日からの年齢を計算するように求められ、試してみました。

SELECT application.applicationLastName, application.applicationFirstName, application.applicationDoB, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) AS CURMONTH, 
ROUND(DATEDIFF(CURMONTH(), applicationDoB) / 365.2425,1) AS age, application.applicationID, application.applicationAcknowledged, application.applicationContacted, application.applicationDate
FROM application
ORDER BY application.applicationDate ASC

ただし、次のエラーが発生します: ネイティブ関数 'DATEDIFF' の呼び出しでパラメーター数が正しくありません

4

2 に答える 2

0

あなたが使用している:DATEDIFF(CURMONTH()、applicationDoB)

あなたのコードで。ただし、CURMONTH() は現在の日付の月のみを提供し、applicationDoB は完全な日付を提供します。CURMONTH() も完全な日付 (現在の月の 1 日) に対応する式に置き換える必要があります。

于 2015-12-11T16:29:29.937 に答える
0

を使用しないでくださいCURMONTH()。代わりに、今日の日付を今月の 1 日としてフォーマットします。

次のクエリを使用します。

SELECT application.applicationLastName, application.applicationFirstName, application.applicationDoB, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) AS CURMONTH, 
ROUND(DATEDIFF(DATE_FORMAT(NOW() ,'%Y-%m-01'), applicationDoB) / 365.2425,1) AS age, application.applicationID, application.applicationAcknowledged, application.applicationContacted, application.applicationDate
FROM application
ORDER BY application.applicationDate ASC
于 2015-12-11T16:24:22.333 に答える