SQL select 所有但不包括日期时间在午夜和早上 6 点之间的结果
SQL select all but exlude results when datetime is between midnight and 6am
我有一个 SQL 查询的基本问题,我找不到解决方案。我有一个 table,其中第一列是纪元时间戳,每 15 分钟保存一个新条目,我想 select 两个日期之间的所有内容。比如说一个月。这很简单,我只是使用
这样的常规查询
SELECT * from MyTable where date > UNIX_TIMESTAMP("2015-04-01 00:00:00") and date < UNIX_TIMESTAMP("2015-05-01 00:00:00");
.
但现在假设我想 select 整个月的所有条目,就像以前一样,但不包括在午夜和早上 6 点之间添加的条目。我怎么能那样做?我无法想象有任何简单直接的方法来做到这一点。我的查询是在 Perl 脚本中执行的,因此我可以执行一个循环,查询每天早上 6 点以上的所有结果,但它会是 "ugly".
谢谢!
(是的,我知道我将我的列命名为日期,日期实际上是一个函数,这很糟糕,我不会再重复了)
像这样的东西怎么样:
SELECT *
from MyTable
where mydate > UNIX_TIMESTAMP("2015-04-01 00:00:00")
and date < UNIX_TIMESTAMP("2015-05-01 00:00:00")
and HOUR(time(mydate)) >= 6;
您可以使用time()
函数提取日期时间列的时间部分,然后检查时间是否在早上6点之后。
SELECT * from MyTable
where time(`date`) > '06:00:00'
and `date` > UNIX_TIMESTAMP("2015-04-01 00:00:00")
and `date` < UNIX_TIMESTAMP("2015-05-01 00:00:00")
非常感谢您的回复,我使用了您的示例并设法让它们与我的 table 和我的数据一起工作。这是最终要求:
SELECT * from My Table
where time(FROM_UNIXTIME(`date`)) > '06:00:00'
and `date` > UNIX_TIMESTAMP("2015-05-01 00:00:00")
and `date` < UNIX_TIMESTAMP("2015-05-02 00:00:00");
基本上第一个答案是正确的,只是 "where time..." 需要函数 FROM_UNIXTIME 才能工作。
再次感谢:)
我有一个 SQL 查询的基本问题,我找不到解决方案。我有一个 table,其中第一列是纪元时间戳,每 15 分钟保存一个新条目,我想 select 两个日期之间的所有内容。比如说一个月。这很简单,我只是使用
这样的常规查询SELECT * from MyTable where date > UNIX_TIMESTAMP("2015-04-01 00:00:00") and date < UNIX_TIMESTAMP("2015-05-01 00:00:00");
.
但现在假设我想 select 整个月的所有条目,就像以前一样,但不包括在午夜和早上 6 点之间添加的条目。我怎么能那样做?我无法想象有任何简单直接的方法来做到这一点。我的查询是在 Perl 脚本中执行的,因此我可以执行一个循环,查询每天早上 6 点以上的所有结果,但它会是 "ugly".
谢谢!
(是的,我知道我将我的列命名为日期,日期实际上是一个函数,这很糟糕,我不会再重复了)
像这样的东西怎么样:
SELECT *
from MyTable
where mydate > UNIX_TIMESTAMP("2015-04-01 00:00:00")
and date < UNIX_TIMESTAMP("2015-05-01 00:00:00")
and HOUR(time(mydate)) >= 6;
您可以使用time()
函数提取日期时间列的时间部分,然后检查时间是否在早上6点之后。
SELECT * from MyTable
where time(`date`) > '06:00:00'
and `date` > UNIX_TIMESTAMP("2015-04-01 00:00:00")
and `date` < UNIX_TIMESTAMP("2015-05-01 00:00:00")
非常感谢您的回复,我使用了您的示例并设法让它们与我的 table 和我的数据一起工作。这是最终要求:
SELECT * from My Table
where time(FROM_UNIXTIME(`date`)) > '06:00:00'
and `date` > UNIX_TIMESTAMP("2015-05-01 00:00:00")
and `date` < UNIX_TIMESTAMP("2015-05-02 00:00:00");
基本上第一个答案是正确的,只是 "where time..." 需要函数 FROM_UNIXTIME 才能工作。
再次感谢:)