mysql返回一段时间内的所有日期

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql返回一段时间内的所有日期相关的知识,希望对你有一定的参考价值。

例如,我传入'2014-08-01' '2014-09-01' 这两个时间,怎样才能用sql获取到这个时间段内的所有日期
2014-08-01
2014-08-02
2014-08-04
...
2014-09-01
这种

select adddate(''2014-08-01', numlist.id) as 'date' from (SELECT n1.i + n10.i*10 + n100.i*100 AS id FROM num n1 cross join num as n10 cross join num as n100) as numlist where adddate(''2014-08-01', numlist.id) <= '2014-09-01' 这样有效但是代码我看不懂。。。 参考技术A 我也有这样的需求 参考技术B 这为什么要用mysql做呢? 参考技术C 你数据库中,存储 时间的字段类型是神马
知道了字段类型,就可以帮你解答了追问

是时间类型的

追答

是timestamp还是time还是int还是varch还是date?
这些都可以存储时间类型

mysql选择范围内的日期时间对象

【中文标题】mysql选择范围内的日期时间对象【英文标题】:mysql select on datetime objects within range 【发布时间】:2019-04-28 18:44:05 【问题描述】:

我有一个表“约会”,其中包含两个标记为“开始”和“结束”的日期时间字段。我也有本地时间的日期,它作为一整天的范围转换为 UTC(这是 SQL 表将日期时间存储为的)。我需要选择 00:00:00 到 08:00:00 UTC 之间的所有(业务)时间,这些时间也属于我的本地时间转换范围。

例如,PST(太平洋标准时间)的用户选择 2018 年 12 月 1 日。12 月 1 日 00:00:00 和 12 月 2 日 00:00:00 之间的日期转换为 UTC,即 08 年 12 月 1 日:00:00 至 12 月 2 日 08:00:00。我需要在前一个范围(12 月 1 日 - 12 月 2 日)的任何一天选择 00:00:00 到 8:00:00 之间的所有约会。

我所有的日期时间/查询都采用“yyyy-MM-dd HH:mm:ss”的形式。

我知道我可以选择两次之间的所有时间,而不是像这样简单:

SELECT start, end 
FROM appointment 
WHERE start>='2018-12-01 00:00:00' 
AND end<='2018-12-02 08:00:00'

但我不确定如何将这些缩减到仅在工作时间之间。

我正在寻找类似的东西

SELECT start, end 
FROM appointment 
WHERE (start>='2018-12-01 00:00:00' 
AND end<='2018-12-02 08:00:00') 
AND (start.substring(11, start.end) >= '00:00:00' 
AND end.substring(11, end.end) <= '08:00:00')

像 start.substring(11, start.end) 这样的调用将以 'HH:mm:ss' 格式返回时间

【问题讨论】:

【参考方案1】:

尝试在 MySQL 中使用TIME 函数。

SELECT start, end FROM appointment WHERE TIME(start) >= '00:00:00' AND TIME(end) <= '08:00:00' AND ... //other conditions

【讨论】:

以上是关于mysql返回一段时间内的所有日期的主要内容,如果未能解决你的问题,请参考以下文章

Mysql生成任意指定两时间范围内的日期列表

获取一段时间内的所有日期

返回用户输入日期之前用户输入时间间隔内的所有记录

Oracle查询一段日期内的星期的日期..例如我要查2011-3-18至2011-3-30内所有星期一的日期..应该怎样查询

Oracle SQL 返回日期内的所有记录

mysql获取给定时间段内的所有日期列表