SELECT DISTINCT users, events, dates
FROM table
WHERE dates between date_format(date1, '%Y-%m-%d')
and date_format(date2, '%Y-%m-%d') or NOW() or CURDATE()....
and user = 'username'
これはかなり一般的ですが、名前と日付を置き換えると (おそらく目的のためにフォーマットする必要はありません)、null プレースホルダーに関係なくすべての結果が返されます。
date_reference_table にデータを入力できます...これのストアド プロシージャは次のとおりです。
年と月のみを認識するために日付形式を使用していますが、これは変更できます...
その場合、内部結合も必要になります...したがって、date_referenceテーブルで内部結合を実行すると、上記のコメントで述べたように結果が吐き出されます。
区切り記号 $$
CREATE PROCEDURE `generate_date_reference_table`(d1 date, d2 date)
BEGIN
declare d datetime;
create table BLMBP.date_reference (d char(7) not null);
set d = d1;
while d <= d2 do
insert into BLMBP.date_reference (d) values (date_format(d, '%Y-%m'));
set d = date_add(d, interval 1 month);
end while;
END$$