Sql 选择从时间戳到时间戳的所有日期间隔

Sql 选择从时间戳到时间戳的所有日期间隔,sql,postgresql,date,Sql,Postgresql,Date,是否有一种方法可以选择两个时间戳之间的所有日期 假设我有2个时间戳2015年2月1日和2015年2月28日 是否有一种方法可以选择两天之间的所有天数 输出: days -------- 2/1/2015 | 2/2/2015 | 2/3/2015 | ... 2/26/2015 | 2/27/2015 | 2/28/2015 | 编辑: 我正在尝试计算从到日期之间每天创建的一些记录,该表只有一个带有创建时间戳的timecreated字段,我需要做的是生成一个表,该表包含两个日期之间的所有

是否有一种方法可以选择两个时间戳之间的所有日期

假设我有2个时间戳2015年2月1日和2015年2月28日 是否有一种方法可以选择两天之间的所有天数

输出:

days
--------
2/1/2015  |
2/2/2015  |
2/3/2015  |
...
2/26/2015 |
2/27/2015 |
2/28/2015 |
编辑:

我正在尝试计算从到日期之间每天创建的一些记录,该表只有一个带有创建时间戳的timecreated字段,我需要做的是生成一个表,该表包含两个日期之间的所有天数,如果当天没有创建记录,则计数为0,或者生成的记录数为X。

当然。那么:

从表中选择*天>='2015-02-01'和天确定。那么:


SELECT*FROM table WHERE days>='2015-02-01'和days如果您想要一个实际包含日期的表,这是一种方法:

--gives a table which contains every date between start & end (inclusive)
declare @startdate datetime = '05/01/2015';
declare @enddate datetime = '05/20/2015';

declare @result table(d datetime);
declare @diff int = datediff(d,@startdate,@enddate);
declare @i int = 0;
while(@i<=@diff) begin
  insert into @result(d) values (@startdate + @i);
  set @i = @i + 1;
end;

select * from @result
--提供一个表格,其中包含开始和结束(包括)之间的每个日期
声明@startdate datetime='05/01/2015';
声明@enddate datetime='2015年5月20日';
声明@result表(d datetime);
声明@diff int=datediff(d,@startdate,@enddate);
声明@i int=0;

而(@i如果您想要一个实际包含日期的表,这是一种方法:

--gives a table which contains every date between start & end (inclusive)
declare @startdate datetime = '05/01/2015';
declare @enddate datetime = '05/20/2015';

declare @result table(d datetime);
declare @diff int = datediff(d,@startdate,@enddate);
declare @i int = 0;
while(@i<=@diff) begin
  insert into @result(d) values (@startdate + @i);
  set @i = @i + 1;
end;

select * from @result
--提供一个表格,其中包含开始和结束(包括)之间的每个日期
声明@startdate datetime='05/01/2015';
声明@enddate datetime='2015年5月20日';
声明@result表(d datetime);
声明@diff int=datediff(d,@startdate,@enddate);
声明@i int=0;
while(@i您可以使用来生成两个日期之间的所有日期,并使用timestamp列与表进行连接:

SELECT a_date, count(days) FROM 
generate_series('2015-01-01'::timestamp, '2015-03-31', '1 day') a_date
  left outer join 
    my_table
  on my_table.days = a_date
group by a_date
您可以使用生成两个日期之间的所有日期,并使用时间戳列与表进行联接:

SELECT a_date, count(days) FROM 
generate_series('2015-01-01'::timestamp, '2015-03-31', '1 day') a_date
  left outer join 
    my_table
  on my_table.days = a_date
group by a_date
您可以在列上使用count()指示是否存在记录。假设您的列名为“记录”:

从表中选择count(record)作为NbRecord,其中days>='2015-02-01'和days您可以在列上使用count(),指示是否有记录。假设您的列称为“record”:


从表中选择count(record)作为NbRecord,其中days>='2015-02-01'和DayStaking关于PostgreSQL,而不是T-SQL:)哎呀,我的错误。这解释了为什么我尝试时接受的答案实际上不起作用:)。下次我会更加关注标签。谈论PostgreSQL,而不是T-SQL:)哎呀,我错了。这就解释了为什么当我尝试时,被接受的答案实际上不起作用:)。下次我会更注意标签的。谢谢你,我需要的正是这个系列。很好!我以前从未使用过,但它会很有用。谢谢你,我需要的正是这个系列。很好!我以前从未用过这个,但它会很有用。在我回答后改变这个问题是不公平的!:)在我回答后改变问题是不公平的!:)