Mysql SQL在两列中选择日期和小时之间的数据

Mysql SQL在两列中选择日期和小时之间的数据,mysql,sql,Mysql,Sql,我有这样一个SQL列: | id | name | date | hour | | 1 | one | 2014-12-29 | 11:00 | | 2 | two | 2014-12-30 | 09:00 | | 3 | three | 2014-12-30 | 11:00 | 我想选择指定的开始日期、开始时间和结束日期、结束时间之间的所有名称 对于此类数据: | id | name | date | hour | | 1 | one | 2014-12-29 |

我有这样一个SQL列:

| id | name | date | hour |
| 1 | one   | 2014-12-29 | 11:00 |  
| 2 | two   | 2014-12-30 | 09:00 |  
| 3 | three | 2014-12-30 | 11:00 | 
我想选择指定的开始日期、开始时间和结束日期、结束时间之间的所有名称

对于此类数据:

| id | name | date | hour |
| 1 | one   | 2014-12-29 | 11:00 |  
| 2 | two   | 2014-12-30 | 09:00 |  
| 3 | three | 2014-12-30 | 11:00 | 
价值观:

start_date = 2014-12-29
start_hour = 11:00
end_date = 2014-12-30
end_hour =  10:00`

它应该返回:1,2。

这看起来像一个基本的sql查询。请尝试以下操作:

select a.name 
       from (select * from data_table 
                      where date >= start_date
                      and   date <= end_date) as a
       where a.hour >= start_hour
       and   a.hour <= end_hour
基本思想是首先形成一个包含所有时间的所有有效天数的数据集,然后从中提取有效时间。另一种可能更直接的方法是创建datetime字段,然后使用该键


让我知道这对你有用。

如果你可以把你的日期时间保存为时间戳,那么链接会帮助你。如果你愿意,考虑下面这个简单的两步过程:1。如果您还没有这样做,请提供适当的DDL和/或SQLFIDLE,以便我们可以更轻松地复制问题。2.如果您尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。感谢您的回复。它在所有的日子里只能工作相同的时间,而这并不是我想要的。创建一个新字段可能是最好的解决方案。您是想用sql来实现这一点,还是用php或c之类的语言编程?如果您使用的是编程语言,您可以尝试使用for循环。这样,对于每个开始和结束日期,您可以有一个唯一的开始和结束时间。