我正在编写一份需要显示每天值的报告。我有查询的开始日期和结束日期,但我希望避免丢失日期,以防表不包含特定日期的值。
我正在考虑创建一个基本日期范围表,其中包含开始和结束之间的所有日期,然后将其与数据表左连接以显示每一天的值。
我找到了一些适用于 mySQL、SQL Server 等的脚本,但没有找到适用于 SQLite 的脚本。
有没有办法快速在表格中填充日期范围?
Thanks
以下是如何使用数字表来扩展范围:
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);
/* #… */
Every line #N
results in 2N rows in the table, the largest number being 2N-1
可以找到(并使用)该方法的演示在 SQL 小提琴上 http://sqlfiddle.com/#!5/1050f/5.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)