相关疑难解决方法(0)

生成在TSQL中递增日期的结果集

考虑需要创建日期的结果集.我们有开始和结束日期,我们想要生成两者之间的日期列表.

DECLARE  @Start datetime
         ,@End  datetime
DECLARE @AllDates table
        (@Date datetime)

SELECT @Start = 'Mar 1 2009', @End = 'Aug 1 2009'

--need to fill @AllDates. Trying to avoid looping. 
-- Surely if a better solution exists.
Run Code Online (Sandbox Code Playgroud)

考虑使用WHILE循环的当前实现:

DECLARE @dCounter datetime
SELECT @dCounter = @Start
WHILE @dCounter <= @End
BEGIN
 INSERT INTO @AllDates VALUES (@dCounter)
 SELECT @dCounter=@dCounter+1 
END
Run Code Online (Sandbox Code Playgroud)

问题:如何使用T-SQL创建一组在用户定义范围内的日期?假设SQL 2005+.如果您的答案是使用SQL 2008功能,请标记为.

sql t-sql database sql-server sql-server-2005

53
推荐指数
5
解决办法
5万
查看次数

SQL Server 2008生成一系列日期时间

我正在尝试生成一个包含一系列日期时间的表.

我有指定的开始日期时间和结束日期时间(结束日期时间是序列结束),我添加一个时间间隔〜(这可能会有所不同)到开始日期时间(以秒为单位),这给了我结束日期时间.

下一个序列使用结束日期时间作为其起始值,并以秒为单位添加时间间隔.为了证明我需要的输出.有没有一种快速的方法来创建这样的表,除了使用大量插入命令?,我真的很难过

StartTime               Endtime                 Duration
2011-07-20 11:00:33     2011-07-20 11:09:47     554
2011-07-20 11:09:47     2011-07-20 11:19:01     554

    declare @StartTime datetime = '2011-07-20 11:00:33',
    @EndTime datetime = '2011-07-20 15:37:34'
    @Interval int = 554 -- this can be changed.

    insert into tmp_IRange
    values('2011-07-20 11:00:33', DATEADD(SECONDS, @Duration, 2011-07-20 11:00:33))
Run Code Online (Sandbox Code Playgroud)

这变得非常繁琐..尤其是当结束日期时间2011-07-20 15:37:34 有很多插入语句时:(

t-sql sql-server datetime sql-server-2008

14
推荐指数
3
解决办法
1万
查看次数

如何在SQL Server 2000中生成一个填充日期的临时表?

我需要创建一个包含日期范围的临时表,以及一些包含占位符值(0)以供将来使用的列.我需要的日期是$ startDate和$ endDate之间每个月的第一天,这些变量可能相隔数年.

我原来的sql语句看起来像这样:

select dbo.FirstOfMonth(InsertDate) as Month, 0 as Trials, 0 as Sales
into #dates
from customer
group by dbo.FirstOfMonth(InsertDate)
Run Code Online (Sandbox Code Playgroud)

"FirstOfMonth"是一个用户定义的函数,它完全按照它所说的做,返回当月的第一天所提供的日期,时间恰好是午夜.

这几乎完全是我所需要的,直到我发现我的日期偶尔会出现间隙,我有几个月没有记录插入日期.由于我的结果仍然缺少几个月,我需要一个不同的方法.

我已经向存储过程添加了以下声明,预计它们需要我需要的日期范围...

declare $startDate set $startDate = select min(InsertDate) from customer
declare $endDate set $endDate = select max(InsertDate) from customer
Run Code Online (Sandbox Code Playgroud)

......但我不知道该怎么做.

我知道这个问题这个问题类似,但是坦率地说,这个答案已经过去了(我不经常使用SQL,当我这样做时,它往往是在旧版本的SQL Server上)并且有一些小问题差点让我失望.

sql t-sql stored-procedures sql-server-2000

11
推荐指数
3
解决办法
7万
查看次数

获取每个小时的时间范围

所以我想要的是生成特定时间范围内的所有小时.

所以考虑到上午11点到下午2点,我会得到:

 11:00 AM
 12:00 PM
 1:00 PM
 2:00 PM
Run Code Online (Sandbox Code Playgroud)

我试图避免必须存储商店可能打开的每个特定小时,只是存储范围(我需要比较其他时间的小时)

谢谢

sql sql-server sql-server-2008-r2

5
推荐指数
3
解决办法
1万
查看次数

SQL:用户计数的每日报告

我正在尝试获取 30 天的用户报告,它将返回日期用户总数作为该日期创建的计数,我使用此查询完成了此操作

 Select count(*)  As [Count] ,  
        (SELECT CONVERT(date, AddDate)) As [Date] 
 from Users 
 WHERE AddDate  >= (SELECT DateAdd(month, -1, Convert(date, GetDate()))) 
 Group By CONVERT(date, AddDate)
Run Code Online (Sandbox Code Playgroud)

它只给我创建任何用户的日期,但我想显示所有30 天,如果它的计数为 0

我想对月度报告做同样的事情。我正在获取创建用户的月份,现在我想将其更改为获取本月以来的最后 12 个月及其总用户数。为此,我正在使用这个查询

 Select count(*)  As [Count] ,
        (Select DATEPART( month , DateAdd( month , DATEPART(mm,AddDate) , -1 ) )) as Month
 from Users 
 WHERE AddDate  >= (SELECT DateAdd(YEAR, -1, Convert(date, GetDate())))
 Group By DATEPART(mm,AddDate)
Run Code Online (Sandbox Code Playgroud)

sql sql-server

2
推荐指数
1
解决办法
1428
查看次数

postgres 中行的日期范围

我在 postgres 中有一张这样的表:

ID 开放日期 关闭日期
5 2006-08-04 2019-12-31

他们之间相隔4897天。我需要将日期范围改为 date 以便每天有一条记录。例如:

ID 开放日期 关闭日期 有效日期
5 2006-08-04 2019-12-31 2006-08-04
5 2006-08-04 2019-12-31 2006-08-05
5 2006-08-04 2019-12-31 2006-08-06
... ………… ………… …………
5 2006-08-04 2019-12-31 2019-12-31

我尝试了这里提供的查询,如下所示:

SELECT
    id,
    open_date,
    close_date,
    open_date + seq.seqnum * interval '1 day' AS valid_date,
  FROM
    TAB1
    LEFT JOIN (
        SELECT
            row_number() over () AS seqnum
        FROM
            TAB1) seq ON seqnum <= (close_date - open_date)
         )
Run Code Online (Sandbox Code Playgroud)

TAB1 包含 600 行。运行此查询后,它会生成正确的记录,但每个 id 最多只能生成 600 条记录。这意味着此日期范围仅限到 …

sql postgresql date

1
推荐指数
1
解决办法
1369
查看次数