GVKun编程网logo

在事件表和日期范围之间的T-SQL查询

9

以上就是给各位分享在事件表和日期范围之间的T-SQL查询,同时本文还将给你拓展MySQL显示范围之间的所有日期、Mysql查询在时间戳的日期范围内非常慢、MySQL查询按日期范围分组?、MySQL:选

以上就是给各位分享在事件表和日期范围之间的T-SQL查询,同时本文还将给你拓展MySQL显示范围之间的所有日期、Mysql查询在时间戳的日期范围内非常慢、MySQL查询按日期范围分组?、MySQL:选择两个日期范围之间的所有数据等相关知识,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

在事件表和日期范围之间的T-SQL查询

在事件表和日期范围之间的T-SQL查询

根据下表

id  Title   Date            Metadata  
------------------------------------
1   A       08/01/2010      M1
1   A       10/05/2010      M2
1   A       03/15/2011      M3
2   B       09/20/2010      M1
2   B       01/15/2011      M2
3   C       12/15/2010      M1

输入变量将是开始日期和结束日期。例如

@startDate = '07/01/2010' 
@endDate = '06/30/2011'

如何生成以下输出?

Title  Jul-10  Aug-10 Sep-10 Oct-10 Nov-10  Dec-10 Jan-11 Feb-11 Mar-11 Apr-11 May-11 Jun-11
-------------------------------------------------------------------------------------------
A      Null    M1     Null    M2     Null   Null   Null    Null   M3     Null   Null   Null
B      Null    M1     Null    Null   Null   Null   M2      Null   Null   Null   Null   Null
C      Null    Null   Null    Null   Null   M1     Null    Null   Null   Null   Null   Null

MySQL显示范围之间的所有日期

MySQL显示范围之间的所有日期

如何解决MySQL显示范围之间的所有日期?

您可以使用以下命令生成日期列表:

select a.Date,  s.*
from 
(
  select curdate() + INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY as Date
  from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a
  cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as b
  cross join (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as c
) a
inner join schedule s
  on a.Date >= s.fromDate 
  and a.Date <= s.toDate

参见带有演示的SQL Fiddle

解决方法

这个问题已经在这里有了答案

从日期范围生成天数
(29个答案)

7年前关闭。

我想显示a fromtoMySQL中的日期之间的所有日期。

例如schedule,具有fromto字段的表中的数据为:

from日期是2013-3-13

to日期2013-3-20

我想要的结果是:

 2013-3-13
 2013-3-14
 2013-3-15
 2013-3-16
 2013-3-17
 2013-3-18
 2013-3-19
 2013-3-20

如何仅使用MySQL查询来实现此目的(而不必使用存储过程,因为我对此并不熟悉)?

编辑:

尽管我仍然没有完全得到想要的结果,但是这里的答案很有帮助。在此示例中,它仅成功运行,但不输出任何内容。而且我不知道这是什么问题。

请帮忙。谢谢!

Mysql查询在时间戳的日期范围内非常慢

Mysql查询在时间戳的日期范围内非常慢

mysql表中有一个表,它有大约176万条记录并且还在增长.似乎记录越多,记录就越慢.下面运行一个简单的查询大约需要65秒. Date_run是一个时间戳字段.我想知道是否会让它运行得慢一些.我可以在选项文件中调整任何建议,以使这个宝贝更快?

select *
from stocktrack
where date(date_run) >= '2014-5-22'
and date(date_run) <= '2014-5-29'

> MysqL 5.6版
> Windows 8.1 64位
>英特尔酷睿i7-4770,3.40Ghz 12GB RAM

最佳答案
要提高此查询的性能,请使用合适的索引(将date_run作为索引中的前导列),并在等效谓词中引用“裸列”.

在函数中包装列(如DATE(),就像在查询中一样)会禁用MysqL优化器使用范围扫描操作.通过查询,即使索引可用,每次运行该查询时,MysqL都会对表中的每一行进行完整扫描.

为了提高性能,请在“裸”列上使用谓词,例如:

WHERE date_run >= '2014-5-22' AND date_run <  '2014-5-29' + INTERVAL 1 DAY

(注意,当我们省略日期文字的时间部分时,MysqL假设时间组件为午夜’00:00:00′.我们知道每个日期时间/时间戳值,日期组件等于’2014-05-29’保证不到’2014-05-30’的午夜.)

MysqL需要适当的索引才能对此特定查询使用有效的范围扫描操作.适合此查询的最简单索引是:

... ON stocktrack (date_run) 

(请注意,任何以date_run作为前导列的索引都是合适的.)

使用索引的范围扫描操作(通常)在大型集合上(通常)更有效(和更快),因为MysqL可以非常快速地从考虑中消除大量行.如果没有范围扫描操作,MysqL必须检查表中的每一行.

使用EXPLAIN来比较原始和修改之间的MySQL查询计划.

你问的问题……

“…对选项文件的任何调整……”

该问题的答案实际上取决于您使用的是哪个存储引擎(MyISAM或InnoDB).降压的最大好处来自于分配足够的缓冲区来保存内存中的数据库块,以减少I / O ……但这样做的代价是可以为运行的其他任何内存提供更少的内存,并且过度分配没有任何好处记忆.关于MysqL服务器调优的问题,除了查询性能之外,最好在dba.stackexchange.com上提出.

MySQL查询按日期范围分组?

MySQL查询按日期范围分组?

我在MySQL中有一张表,该表显示了我每天记录的小时数。我正在尝试建立一个视图,该视图将允许我按块/天范围快速将数据分组。最简单的情况是每月一次,这并不难。我可以将日期选择为“%y-%m”,然后按该列分组。

前任:

select time_logged,date_format(start_date,'%Y-%m') AS `month_logged`
from work_log
group by month_logged

如果我按月分组,那很好。但是我的问题是,我需要从每月的13号到下个月的12号进行分组(例如:7月13日至8月12日,8月13日至9月12日,等等)。

有没有一种简单的方法可以在单个查询/视图中执行类似的操作?我似乎无法提出满足我的需求的查询,即使使用不同的日期字段组合也是如此。

MySQL:选择两个日期范围之间的所有数据

MySQL:选择两个日期范围之间的所有数据

如何进行查询以选择两个日期之间的所有内容。

SELECT * FROM applications WHERE `datum` >='2013-11%' AND `datum`<='2014-04%';

我正在尝试做类似的事情,但那只返回一条记录是行不通的。
有人可以告诉我如何使它显示两个日期之间的所有内容。

Datum的类型为Datetime。
像2013-11-02 12:21:00

今天关于在事件表和日期范围之间的T-SQL查询的分享就到这里,希望大家有所收获,若想了解更多关于MySQL显示范围之间的所有日期、Mysql查询在时间戳的日期范围内非常慢、MySQL查询按日期范围分组?、MySQL:选择两个日期范围之间的所有数据等相关知识,可以在本站进行查询。

本文标签: