1

datetime を含む mysql-db があります。毎月、先月以前のすべての料金を含む請求書を作成したいと考えています。したがって、2012 年 5 月 2 日、5 日、または 30 日であれば、2012 年 4 月以前の請求書のみが必要です。date_sub で試してみましたが、1 か月減算するだけなので、前月の同じ日までしか請求されません。どうすればいいですか?

get * from Ads WHERE AdEnd > ??

タイ!

4

2 に答える 2

4

私はいつも、現在の日付から日を日数で引くと、前月の最終日になることを発見しました。たとえば、その月の15日に15日を引くと、前月の最終日になります。

SELECT (DATE_SUB(CURDATE(),INTERVAL DAYOFMONTH(CURDATE()) DAY))

の場合、上記CURDATE()2012-05-05を返します2012-04-30

したがって、先月の最終日に広告を表示するには、次のようにします。

SELECT *
FROM Ads
WHERE AdEnd <= (DATE_SUB(CURDATE(),INTERVAL DAYOFMONTH(CURDATE()) DAY))

これは、AdEndがDATEの場合に機能しますが、DATETIMEの場合は、実行したいだけなless than the first of the monthので、次のように1日少ない日を引いて月の最初の値を取得します。

SELECT *
FROM Ads
WHERE AdEnd < (DATE_SUB(CURDATE(),INTERVAL DAYOFMONTH(CURDATE()) - 1 DAY))
于 2012-05-05T04:42:22.037 に答える
-1

date_diffたとえば、次のようにしてください。

SELECT DATEDIFF('2008-11-30','2008-11-29') AS DiffDate

収量:

1
于 2012-05-05T02:09:11.273 に答える