繁体   English   中英

创建日期范围表

[英]Creating a date range table

我正在撰写一份需要每天显示价值的报告。 我有查询的开始和结束日期,但我希望避免错过几天,以防表格不包含特定日期的值。 我正在考虑创建一个基本日期范围表,其中包含开始和结束之间的所有日期,然后将其与数据表连接以显示每天的值。

我为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个N表中的行,最大数为2 N -1

可以在SQL Fiddle上找到(并使用)该方法的演示。

这取决于你想要的细节水平。 如果您只想要从A到B的日期,您可以这样做:

declare @start datetime
set @start = '04/20/2012'
while @start <getdate() begin
  print @start
  set @start = dateadd(dd,1,@start)
end

只需将打印更改为表格上的插入内容即可。

如果您需要更多详细信息,可能需要更详细的脚本。 我可以指出一些,只是更具体地说明你的要求

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM