我想运行一个类似的查询
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 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
阿丽维亚的答案更为简洁.我已经改变了接受的答案.
我希望日期列表位于选择查询的两个日期之间.例如:
如果我给'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)
我怎样才能得到?
我有一个数字列表,比如{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
但是,我想完成这个没有临时表.
任何人都对如何发生有任何意见?
我只需要在一个月内返回所有日期的列表.我没有访问特定的表.所以如果给定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语句,它将花费每一天并对与这些日期相关的记录进行计数,但我需要此表作为我的报告的基础.
我们正在构建一个查询来计算每天每小时的事件数.大多数日子都有几个小时没有任何活动,因此在运行查询的地方,每小时的活动数量会显示,但是存在间隙,查询会排除这些.我们仍然希望显示没有活动的小时数并显示零,以便可以绘制零值.我们使用的查询看起来像这样......
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中的查询.
如果我有两列STARTDATE和END_DATE.
我想选择日期介于这两个日期之间的所有行.
例如:startdate = 1/1/2011 AND enddate = 2/2/2011.
我需要形成一个报告,在日期间隔内为每个日期提供一些信息。
我需要在单个查询中使用它(不能创建任何函数或支持表)。
我怎样才能在 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) 我有一张这样的桌子:
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 天(只是一个例子,但类似的东西)
我有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是优先级,因为数据来自我的数据库.