相关疑难解决方法(0)

从日期范围生成天数

我想运行一个类似的查询

select ... as days where `date` is between '2010-01-20' and '2010-01-24'
Run Code Online (Sandbox Code Playgroud)

并返回如下数据:

days
----------
2010-01-20
2010-01-21
2010-01-22
2010-01-23
2010-01-24

mysql sql datetime between

134
推荐指数
6
解决办法
11万
查看次数

使用函数获取两个日期之间的日期列表

我的问题类似于这个 MySQL问题,但是用于SQL Server:

是否有函数或查询将返回两个日期之间的天数列表?例如,假设有一个名为ExplodeDates的函数:

SELECT ExplodeDates('2010-01-01', '2010-01-13');
Run Code Online (Sandbox Code Playgroud)

这将返回一个包含以下值的列表:

2010-01-01
2010-01-02
2010-01-03
2010-01-04
2010-01-05
2010-01-06
2010-01-07
2010-01-08
2010-01-09
2010-01-10
2010-01-11
2010-01-12
2010-01-13
Run Code Online (Sandbox Code Playgroud)

我认为日历/数字表可能能够帮助我.


更新

我决定查看提供的三个代码答案,执行结果 - 占总批次的百分比 - 是:

越低越好

我已经接受了Rob Farley的答案,因为它是最快的,尽管数字表解决方案(KM和StingyJack在他们的答案中使用)都是我的最爱.Rob Farley的速度提高了三分之二.

更新2

阿丽维亚的答案更为简洁.我已经改变了接受的答案.

sql-server date

69
推荐指数
4
解决办法
15万
查看次数

如何在mysql选择查询中获取两个日期之间的日期列表

我希望日期列表位于选择查询的两个日期之间.例如:

如果我给'2012-02-10'和'2012-02-15'我需要结果.

date      
----------
2012-02-10
2012-02-11
2012-02-12
2012-02-13
2012-02-14
2012-02-15 
Run Code Online (Sandbox Code Playgroud)

我怎样才能得到?

mysql sql

37
推荐指数
3
解决办法
9万
查看次数

MySQL - 从表的id字段中没有对应项的数字列表中选择

我有一个数字列表,比如{2,4,5,6,7}我有一张表,foos,有foos.ID,包括说,{1,2,3,4,8,9}

我喜欢拿我的数字列表,并在我的表的ID字段中找到没有对应的数字.

实现此目的的一种方法是创建一个表格栏,在ID字段中加载{2,4,5,6,7}.然后,我会这样做

SELECT bars.* FROM bars LEFT JOIN foos ON bars.ID = foos.ID WHERE foos.ID IS NULL

但是,我想完成这个没有临时表.

任何人都对如何发生有任何意见?

mysql set temp database-table

36
推荐指数
3
解决办法
6万
查看次数

mysql选择没有表的日期

我只需要在一个月内返回所有日期的列表.我没有访问特定的表.所以如果给定2月份我需要一个sql select语句,返回以下内容:

Day
----
2011-02-01
2011-02-02
2011-02-03
... etc, etc. 
2011-02-27
2011-02-28
Run Code Online (Sandbox Code Playgroud)

这应该是相当简单的,我想,如果我知道我需要做的sql select语句.这个月应该是可选择的,我会从网页选择框传递它,让用户选择月份和年份.这将成为报告的基础.我已经有了一个select语句,它将花费每一天并对与这些日期相关的记录进行计数,但我需要此表作为我的报告的基础.

mysql

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

在查询的返回值中插入日期,其中没有

我们正在构建一个查询来计算每天每小时的事件数.大多数日子都有几个小时没有任何活动,因此在运行查询的地方,每小时的活动数量会显示,但是存在间隙,查询会排除这些.我们仍然希望显示没有活动的小时数并显示零,以便可以绘制零值.我们使用的查询看起来像这样......

select datepart(Year, dev_time) as Year,
    datepart(Month, dev_time) as Month,
    datepart(Day, dev_time) as Day,
    datepart(Hour, dev_time) as Hour,
    count(tdm_msg) as Total_ACTIVITES
from TCKT_ACT
where tdm_msg = ‘4162? and dev_time >= DATEADD(day, - 1, GETDATE())
group by datepart(Year, dev_time) ,
    datepart(Month, dev_time) ,
    datepart(Day, dev_time),
    datepart(Hour, dev_time)
order by datepart(Year, dev_time) asc,
    datepart(Month, dev_time) asc,
    datepart(Day, dev_time) asc,
    datepart(Hour, dev_time) asc
Run Code Online (Sandbox Code Playgroud)

sql gaps-and-islands

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

选择两列之间的日期

我需要SQL中的查询.
如果我有两列STARTDATEEND_DATE.
我想选择日期介于这两个日期之间的所有行.

例如:startdate = 1/1/2011 AND enddate = 2/2/2011.

sql

8
推荐指数
2
解决办法
4万
查看次数

PrestoDB:选择两个日期之间的所有日期

我需要形成一个报告,在日期间隔内为每个日期提供一些信息。

我需要在单个查询中使用它(不能创建任何函数或支持表)。

我怎样才能在 PrestoDB 中实现这一点?

注意:这里这里甚至这里有很多特定于供应商的解决方案。但是它们都不能满足我的需要,因为它们要么不能在 Presto 中工作,要么不能使用表/函数。

更准确地说,这里是一个查询示例:

WITH ( query to select all dates between 2017.01.01 and 2018.01.01 ) AS dates
SELECT 
  date     date, 
  count(*) number_of_orders
FROM dates dates
LEFT JOIN order order
  ON order.created_at = dates.date
Run Code Online (Sandbox Code Playgroud)

sql presto

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

有没有办法在这个表中按时间间隔分组?

我有一张这样的桌子:

DateTime   A

10:00:01   2 
10:00:07   4
10:00:10   2
10:00:17   1
10:00:18   3
Run Code Online (Sandbox Code Playgroud)

这是否可以创建一个查询,每 10 秒返回一次 A 的平均值?在这种情况下,结果将是:

3 (4+2)/2
2 (2+1+3)/3
Run Code Online (Sandbox Code Playgroud)

提前致谢!

编辑:如果您真的认为这无法完成,请说“不”!:) 这是一个可以接受的答案,我真的不知道这是否可以做到。

EDIT2:我使用的是 SQL Server 2008。我想要不同的分组但已修复。例如,范围每 10 秒、1 分钟、5 分钟、30 分钟、1 小时和 1 天(只是一个例子,但类似的东西)

sql group-by sql-server-2008

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

使用mysql在15分钟的插槽中分割时间间隔

我有2个约会

start datetime = 2013-08-28 17:43:41AND end datetime =2013-08-28 22:23:51

现在我想将开始时间转换为上限15分钟间隔,就像2013-08-28 17:45:00在这种情况下一样,在较低级别15分钟间隔内转换的结束时间相同2013-08-28 22:15:00

然后我想要那个时间之间的15分钟间隔的数组.

例如.对于我们的情况应该是

a[0] = 2013-08-28 17:45:00
a[0] = 2013-08-28 18:00:00
a[1] = 2013-08-28 18:15:00
a[2] = 2013-08-28 18:30:00
a[3] = 2013-08-28 18:45:00
a[4] = 2013-08-28 19:00:00
......like wise

我希望使用mySql/php,但mysql是优先级,因为数据来自我的数据库.

php mysql sql datetime group-by

5
推荐指数
2
解决办法
4070
查看次数