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
975 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!

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