0

このクエリのヘルプが必要です

現在、ユーザーの生年月日を保存するためにUNIXタイムスタンプを使用しています

ユーザーの今後の生年月日を取得するためのこのクエリがあります。1986-09-18 (Ymd) のような 1970 年以降の dob でのみ機能し
ますが、1969-09-18 (Ymd) のような 1970 年以前の dob では機能しません

SELECT u.id, u.dob
FROM hrs_employee_details u 
WHERE CONCAT( IF( MONTH( FROM_UNIXTIME( u.dob ) ) =1 AND MONTH( CURRENT_DATE( ) ) = 12, YEAR( CURRENT_DATE( ) ) +1, YEAR( CURRENT_DATE( ) ) ) , DATE_FORMAT( FROM_UNIXTIME( u.dob ) , '-%m-%d' ) ) 
BETWEEN CURRENT_DATE() AND DATE_ADD( CURRENT_DATE() , INTERVAL 14 DAY ) AND u.dob <> '' ;

事前に感謝しますできるだけ早く私を助けてください...

4

2 に答える 2

0

前述のように、これには DATE(TIME) フィールドを使用すると、操作がはるかに簡単になります。

しかし、負のタイムスタンプの年齢も取得するには:

SELECT DATE_FORMAT(FROM_DAYS(TO_DAYS(NOW())-TO_DAYS(DATE_ADD(FROM_UNIXTIME(0), INTERVAL dob second))), '%Y')+0 AS age FROM hrs_employee_details
于 2013-09-09T13:01:23.330 に答える