Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Urutan Tarikh dalam T-SQL dengan Cekap?

Bagaimana untuk Menjana Urutan Tarikh dalam T-SQL dengan Cekap?

Barbara Streisand
Barbara Streisandasal
2025-01-11 20:08:43666semak imbas

How to Efficiently Generate a Sequence of Dates in T-SQL?

Janakan keputusan tarikh tambahan yang ditetapkan dalam T-SQL

Dalam SQL Server, menjana set tarikh antara tarikh mula dan tarikh tamat yang ditentukan memerlukan penyelesaian yang cekap dan dioptimumkan. Pendekatan biasa ialah menggunakan gelung WHILE untuk menambah hari secara berperingkat pada tarikh mula sehingga tarikh tamat dicapai.

Namun, untuk kes di mana julat tarikh adalah dalam tempoh 2047 hari, kaedah lain boleh digunakan. Pertanyaan T-SQL berikut menggunakan jadual sistem spt_values:

<code class="language-sql">declare @dt datetime, @dtEnd datetime
set @dt = getdate()
set @dtEnd = dateadd(day, 100, @dt)

select dateadd(day, number, @dt)
from (select number from master.dbo.spt_values
where [type] = 'P'
) n
where dateadd(day, number, @dt) < @dtEnd</code>

Pertanyaan ini menggunakan jadual spt_values, yang mengandungi julat nombor dari 0 hingga 2047. Dengan menapis jenis 'P' kita mendapat satu set nombor berturut-turut. Setiap nombor ditambah pada tarikh mula menggunakan fungsi dateadd, dengan berkesan menghasilkan set keputusan tarikh kenaikan.

Kaedah ini mempunyai kelebihan berikut:

  • Kesederhanaan: Ia tidak memerlukan gelung atau pengiraan yang rumit.
  • Kecekapan: Pertanyaan menggunakan jadual sistem, mengelakkan overhed yang dikaitkan dengan jadual yang ditentukan pengguna.
  • Skalabiliti: Ia boleh mengendalikan julat tarikh yang lebih besar dalam had 2047 hari.

Untuk SQL Server 2008 dan ke atas, kaedah ini menyediakan penyelesaian yang cekap dan mudah untuk menjana set tarikh yang semakin meningkat dalam T-SQL.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Urutan Tarikh dalam T-SQL dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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