【问题标题】:Select data between datetime range在日期时间范围之间选择数据
【发布时间】:2019-03-26 07:59:22
【问题描述】:

我有一个名为 lap 的表,其中包含如下数据:

code | name | details | time_stamp
===================================
1a   | A-wan| Goods   | 01-02-2019 11:08:10
3a   | D-wan| Goods   | 05-02-2019 01:00:40
2a   | B-gud| Foods   | 02-03-2019 05:31:05
1a   | A-cro| Bills   | 02-03-2019 15:30:15
1a   | A-set| Bills   | 03-03-2019 17:24:35
1a   | C-won| Goods   | 03-03-2019 10:21:55
1a   | C-gud| Foods   | 04-03-2019 01:30:06

我用dd-mm-yy hh:mm:ss格式

和我的查询 SELECT * FROM lap WHERE time_stamp >= '02-03-2019 00:00:00' AND time_stamp <= '03-03-2019 23:59:59'

结果是

code | name | details | time_stamp
===================================
3a   | D-wan| Goods   | 05-02-2019 01:00:40
2a   | B-gud| Foods   | 02-03-2019 05:31:05
1a   | A-cro| Bills   | 02-03-2019 15:30:15
1a   | A-set| Bills   | 03-03-2019 17:24:35
1a   | C-won| Goods   | 03-03-2019 10:21:55

它包括的数据 3a | D-wan| Goods | 05-02-2019 01:00:40 我认为这可能是因为0502 大,尽管月份不同。 有人可以帮忙吗?

当我在同一日期更改查询时,它运行良好 SELECT * FROM lap WHERE time_stamp >= '02-03-2019 00:00:00' AND time_stamp < '02-03-2019 23:59:59'

code | name | details | time_stamp
===================================
2a   | B-gud| Foods   | 02-03-2019 05:31:05
1a   | A-cro| Bills   | 02-03-2019 15:30:15

【问题讨论】:

  • 你试过SELECT * FROM lap WHERE time_stamp BETWEEN '02-03-2019 00:00:00' AND '03-03-2019 23:59:59'吗?
  • @nDy 你的数据库表中time_stamp的数据类型是什么?
  • 05 是日期而不是月份。
  • 使用适当的日期/时间数据类型存储日期/时间
  • 是的,我试过SELECT * FROM lap WHERE time_stamp BETWEEN '02-03-2019 00:00:00' AND '03-03-2019 23:59:59'。它不起作用

标签: php mysql datetime range between


【解决方案1】:

你应该使用date函数然后它会工作,

SELECT * FROM lap WHERE time_stamp BETWEEN '02-03-2019' AND '03-03-2019';

或者您可以将格式更改为yyyy-mm-dd 到您的后端并检查

SELECT * FROM lap WHERE time_stamp BETWEEN '2019-03-02' AND '2019-03-03';

【讨论】:

  • 如果我使用这个功能,并不是所有的数据都会显示。它必须包括时间
  • 我使用了相同的查询并获得了结果。如果您提到日期,如果没有时间,它将自动获取从开始时间 1 到 24 小时的全部数据。您也可以将格式更改为 yyyy-mm-dd 并检查
  • 如果我必须更改日期格式,我担心我必须更改所有数据
  • 在这种情况下,您可以使用 sql dateformat 函数,例如 SELECT DATE_FORMAT(your column name, "%d %m %Y") FROM your_table_name;
【解决方案2】:

试试

 SELECT * FROM lap WHERE time_stamp BETWEEN DATE_FORMAT('02-03-2019 00:00:00', '%d-%m-%Y %h:%m:%s') AND DATE_FORMAT('03-03-2019 23:59:59', '%d-%m-%Y %h:%m:%s');

mysql 日期时间格式见下方链接 https://dev.mysql.com/doc/refman/8.0/en/datetime.html

如果您以其他格式传递日期,最好更改格式。

【讨论】:

  • 我尝试了这段代码,但不幸的是它显示零结果。
猜你喜欢
  • 2013-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-19
  • 2012-04-12
  • 1970-01-01
  • 2012-12-21
相关资源
最近更新 更多