Rumah > pangkalan data > tutorial mysql > Bagaimanakah SQL Boleh Mengenalpasti Julat Tarikh Berturut-turut?

Bagaimanakah SQL Boleh Mengenalpasti Julat Tarikh Berturut-turut?

Susan Sarandon
Lepaskan: 2025-01-01 01:20:08
asal
1014 orang telah melayarinya

How Can SQL Identify Consecutive Date Ranges?

Kesan Julat Tarikh Berturut-turut Menggunakan SQL

Pengenalan

Apabila menyediakan data untuk aplikasi kalendar, selalunya perlu untuk mengekstrak julat tarikh berturut-turut daripada jujukan tarikh. Tugas ini boleh mencabar, terutamanya apabila tarikh tidak dijarakkan secara konsisten.

Penyelesaian Menggunakan SQL

Untuk menyelesaikan masalah ini menggunakan SQL, kami boleh menggunakan pendekatan berikut:

  1. Buat Lajur Nombor Baris: Berikan nombor baris kepada setiap tarikh menggunakan fungsi ROW_NUMBER(). Ini mencipta pengecam unik untuk setiap tarikh.
  2. Kumpulkan Mengikut Perbezaan Tarikh: Kumpulkan tarikh mengikut perbezaan antara nombor baris dan tarikh itu sendiri. Perbezaan ini adalah invarian dalam urutan berturut-turut.
  3. Cari Tarikh Mula dan Tamat: Tentukan tarikh minimum dan maksimum dalam setiap kumpulan menggunakan fungsi MIN() dan MAX(). Ini akan mewakili tarikh mula dan tamat julat berturut-turut.

Pertanyaan SQL

Pertanyaan SQL berikut melaksanakan pendekatan di atas:

WITH t AS (
  SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i
  FROM table_name
  GROUP BY InfoDate
)
SELECT MIN(d),MAX(d)
FROM t
GROUP BY DATEDIFF(day,i,d)
Salin selepas log masuk

Keputusan

Pertanyaan akan menghasilkan perkara berikut output:

StartDate EndDate
2013-12-04 2013-12-06
2013-12-09 2013-12-10
2014-01-01 2014-01-03
2014-01-06 2014-01-07
2014-01-29 2014-01-31
2014-02-03 2014-02-04

Output ini menyediakan tarikh mula dan tamat semua julat tarikh berturut-turut dalam data asal.

Atas ialah kandungan terperinci Bagaimanakah SQL Boleh Mengenalpasti Julat Tarikh Berturut-turut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan