0

一連の日付の間のミス日付を取得します。日付から日付までの間にミス日を取得したい。mysqlは初めてですが、日付と日付の間の日付を逃すのを手伝ってください。

4

2 に答える 2

0

この答えは、上記の答えからpaxdiabloの答えを愛情を込めて取り除いたものです。

私が行ったのは、いくつかのテストデータと、左外部結合を使用して欠落している日付を見つけるクエリの例を追加することだけです。私はあなたのコメントでテストデータを使用しました、すなわち

「私のテーブルに01-01-2012,01-02-2012,01-04-2012,01-05-2012と01-07-2012があるとします。今、01-03-2012と01-06-を取得したいです。 2012.どうすればこれを入手できますか?」

テーブルにデータを入力する方法を考え出す必要がありall_datesます。それはあなたにとって「日付の完全なセット」を構成するものにちょっと依存します。未来へのすべての日付?未来への毎月の初日?過去と未来からのすべての日付?過去と未来の毎月の初日?ここであなた次第。例として、2012年の毎月1日を使用しました。

create table all_dates
(id int unsigned not null primary key auto_increment,
a_date date not null,
unique key `all_dates_uidx1`(a_date));

-- First day of every month in 2012    
insert into all_dates (a_date) values ('2012-01-01');
insert into all_dates (a_date) values ('2012-02-01');
insert into all_dates (a_date) values ('2012-03-01');
insert into all_dates (a_date) values ('2012-04-01');
insert into all_dates (a_date) values ('2012-05-01');
insert into all_dates (a_date) values ('2012-06-01');
insert into all_dates (a_date) values ('2012-07-01');
insert into all_dates (a_date) values ('2012-08-01');
insert into all_dates (a_date) values ('2012-09-01');
insert into all_dates (a_date) values ('2012-10-01');
insert into all_dates (a_date) values ('2012-11-01');
insert into all_dates (a_date) values ('2012-12-01');

-- Note that my_dates table is missing 2012-03-01 and 2012-06-01
create table my_dates
(id int unsigned not null primary key auto_increment,
a_date date not null);

insert into my_dates (a_date) values ('2012-01-01');
insert into my_dates (a_date) values ('2012-02-01');
insert into my_dates (a_date) values ('2012-04-01');
insert into my_dates (a_date) values ('2012-05-01');
insert into my_dates (a_date) values ('2012-07-01');
insert into my_dates (a_date) values ('2012-08-01');
insert into my_dates (a_date) values ('2012-09-01');
insert into my_dates (a_date) values ('2012-10-01');
insert into my_dates (a_date) values ('2012-11-01');
insert into my_dates (a_date) values ('2012-12-01');

-- Get me the dates in all_dates that are not present in my_dates 
-- i.e. missing dates
select ad.a_date
from all_dates ad
left join my_dates md on ad.a_date = md.a_date
where md.a_date is null;
于 2012-07-07T14:39:53.577 に答える
0

ここにも同様のトレッドがあります: 2 つの日付間の日付のリストを取得する

于 2012-07-07T13:05:59.003 に答える