我正在寫一份報告,需要每天顯示一個值。我有查詢的開始日期和結束日期,但是我希望避免在表格不包含特定日期的值的情況下丟失日期。 我正在考慮創建一個基準日期範圍表,該表涵蓋了開始和結束之間的所有天數,然後將其與數據表連接起來以顯示每天的值。創建日期範圍表
我發現了一些用於mySQL,SQL Server等的腳本,但沒有一個用於SQLite。 有沒有辦法快速填充日期範圍的表格?
謝謝
我正在寫一份報告,需要每天顯示一個值。我有查詢的開始日期和結束日期,但是我希望避免在表格不包含特定日期的值的情況下丟失日期。 我正在考慮創建一個基準日期範圍表,該表涵蓋了開始和結束之間的所有天數,然後將其與數據表連接起來以顯示每天的值。創建日期範圍表
我發現了一些用於mySQL,SQL Server等的腳本,但沒有一個用於SQLite。 有沒有辦法快速填充日期範圍的表格?
謝謝
這裏是你如何可以使用一個號碼錶來擴大範圍:
SELECT
datetime('now', N || ' seconds') AS DT
FROM numbers
WHERE N < strftime('%s', 'now', '1 minutes') - strftime('%s', 'now');
在這種情況下,數字表應該持有數量從0開始。
數字表格是一個值得在許多方面保持得心應手的工具。你可以初始化它這個樣子,比如:
CREATE TABLE numbers (N int);
/* #0 */ INSERT INTO numbers (N) SELECT 0;
/* #1 */ INSERT INTO numbers (N) SELECT N + C FROM numbers, (SELECT COUNT(*) AS C FROM numbers);
/* #2 */ INSERT INTO numbers (N) SELECT N + C FROM numbers, (SELECT COUNT(*) AS C FROM numbers);
/* #3 */ INSERT INTO numbers (N) SELECT N + C FROM numbers, (SELECT COUNT(*) AS C FROM numbers);
/* #4 */ INSERT INTO numbers (N) SELECT N + C FROM numbers, (SELECT COUNT(*) AS C FROM numbers);
/* #5 */ INSERT INTO numbers (N) SELECT N + C FROM numbers, (SELECT COUNT(*) AS C FROM numbers);
/* #6 */ INSERT INTO numbers (N) SELECT N + C FROM numbers, (SELECT COUNT(*) AS C FROM numbers);
/* #… */
每一行#N
結果在表2個ň行,數量最多的是2N-1
方法的演示可以發現(和玩)on SQL Fiddle。
COOL!我相信這會非常方便,可以謝謝! – itayw
@mr。 kav數字表格非常全用,請參閱[創建和填充數字表格的最佳方式是什麼?](http://stackoverflow.com/q/1393951/65223) –
它取決於你想要的細節水平。 如果您只是想從一個日期,直到B可以做到這一點:
declare @start datetime
set @start = '04/20/2012'
while @start <getdate() begin
print @start
set @start = dateadd(dd,1,@start)
end
只是改變打印到一個表上的插入。
如果您需要更多詳細信息,您可能需要更詳細的腳本。我可以指出你一些,只是對你的要求更具體的
[在SQL Server中獲取日期範圍內的所有日期](http://stackoverflow.com/questions/9140308/get-all-dates-in-date-range-in-sql-server) –
謝謝@AndriyM,但是所示的線程包含了在MS SQL Server上使用T-SQL實現的特定示例。不幸的是(或幸運的是,取決於你問誰)我正在使用SQLite,這意味着我不能使用所示的解決方案。 – itayw
我相信當我看到你的問題時,發生了一些事情,否則我無法解釋我怎麼會錯過'sqlite'標籤。抱歉。儘管如此,接受的答案的基本思想是使用數字表。也許它也適用於你的情況。 –