Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengisi Tarikh Hilang dalam Pertanyaan SQL Saya?

Bagaimanakah Saya Boleh Mengisi Tarikh Hilang dalam Pertanyaan SQL Saya?

DDD
Lepaskan: 2024-12-13 17:52:16
asal
509 orang telah melayarinya

How Can I Fill in Missing Dates in My SQL Queries?

Padding Tarikh Lurus dalam Pertanyaan SQL

Apabila mengambil data daripada jadual MySQL yang termasuk tarikh, adalah perkara biasa untuk menghadapi jurang dalam data yang dikembalikan . Untuk mengisi jurang ini dan mencipta urutan tarikh yang lengkap, terdapat beberapa pendekatan yang tersedia.

Pendekatan Sisi Pelayan MySQL

Satu kaedah berkesan melibatkan mencipta jadual sementara dalam MySQL yang menjangkau julat tarikh yang dikehendaki. Ini boleh dicapai menggunakan prosedur tersimpan berikut:

create procedure sp1(d1 date, d2 date)
  declare d datetime;

  create temporary table foo (d date not null);

  set d = d1
  while d <= d2 do
    insert into foo (d) values (d)
    set d = date_add(d, interval 1 day)
  end while

  select foo.d, count(date)
  from foo left join table on foo.d = table.date
  group by foo.d order by foo.d asc;

  drop temporary table foo;
end procedure
Salin selepas log masuk

Prosedur ini menjana jadual sementara bernama foo yang mengandungi semua tarikh dalam julat yang ditentukan. Anda kemudiannya boleh meninggalkan sertai jadual asal anda dengan foo untuk mengisi tarikh yang tiada dengan kiraan sifar.

Pendekatan Sisi Pelanggan Perl

Jika anda mempunyai akses terhad kepada Pelayan MySQL atau memerlukan lebih fleksibiliti, anda juga boleh mengendalikan padding tarikh pada bahagian klien Perl. Pertimbangkan untuk menggunakan modul seperti Date::Parse atau DateTime::Lite:

use DateTime;

my $start_date = '2008-08-05';
my $end_date = '2008-08-07';

my $date_range = DateTime->range(start => $start_date, end => $end_date);
for my $date in $date_range->each('day') {
    print CSV "$date,0\n";
}
Salin selepas log masuk

Pendekatan ini berulang melalui julat tarikh yang ditentukan dan mencetak tarikh yang tiada dengan kiraan sifar.

Kesimpulan

Bergantung pada situasi khusus anda dan keupayaan pelayan, kedua-dua bahagian pelayan dan pelanggan pendekatan menawarkan pilihan untuk mengalas tarikh kosong dalam pertanyaan SQL. Pendekatan sisi pelayan adalah lebih cekap tetapi memerlukan akses pangkalan data, manakala pendekatan sisi klien memberikan fleksibiliti yang lebih besar tetapi mungkin memerlukan beberapa overhed prestasi.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengisi Tarikh Hilang dalam Pertanyaan SQL Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan