0

過去 3 か月のチケットを選択したいと考えています。過去 3 か月を計算します。この投稿を見ました: https://stackoverflow.com/questions/7268896/calculate-3-month-period-using-mysql

しかし、うまくいかないようです。これが私のクエリです

select `created`, datediff( now(), `created`) as period , now()
from tag
having period%90=0;

しかし、これは次のような日付を返します

created             period  now()  
2009-10-25 12:42:15 1170    2013-01-07 10:15:37 

何か案は?ありがとう

4

2 に答える 2

1

DATE_SUB()前の日付を取得するために使用できます。あなたの場合、使用したいと思うでしょうDATE_SUB(NOW(), INTERVAL 3 MONTH)

SELECT FROM tag WHERE DATE_SUB(NOW(), INTERVAL 3 MONTH) < created


編集:DATE_SUB()以下の要求に応じて代替を追加しました

別の方法として、次の方法を使用することもできます (これを行うには、私が現在思いつかない、もっときちんとした方法があるかもしれません)。

STR_TO_DATE(CONCAT(DAY(NOW()), '-', MONTH(NOW()) + IF(MONTH(NOW()) > 3, -3, +9), '-', YEAR(NOW()) + IF(MONTH(NOW()) > 3, 0, -1)), '%e-%m-%Y')

于 2013-01-07T16:26:00.377 に答える
1

% はモジュラス演算子なので、期間を 90 で割り、残りがテストされます...つまり。0,90,180,270,... はすべて 0 を返します。

私はあなたが必要だと思います

period < 90

過去 90 日間のすべてのエントリ。30 日のみが必要な場合は、期間 = 90 で十分です。

于 2013-01-07T16:25:52.660 に答える