【问题标题】:PHP MYSQL query data between date and time fields HEROKUPHP MYSQL查询日期和时间字段之间的数据HEROKU
【发布时间】:2016-01-29 22:09:49
【问题描述】:

我必须查询特定日期和时间范围内的数据。我在 heroku 中有一个 ClearDB 数据库,有 2 个字段来保存日期和时间,这些字段是 varchar 类型,而不是 DATE。 Data Structure here 并且不要看字段名称,我在下面的查询中进行了更改以便更好地理解。

我有这个有效的查询:

SELECT 
DISTINCT dates, times, lat, long, ide FROM data 
WHERE ide = 'lcg1234' AND (dates>= '2016-01-27' AND times>='15:00:00') 
 AND (dates<= '2016-01-29' AND times<='16:00:00') 
 ORDER BY times ASC

问题是当我将最后一个 AND 中的时间更改为这样的较低值时:

SELECT 
DISTINCT dates, times, lat, long, ide FROM data 
WHERE ide = 'lcg1234' AND (dates>= '2016-01-27' AND times>='15:00:00') 
AND (dates<= '2016-01-29' AND times<='01:00:00') 
ORDER BY times ASC

它不起作用,为什么会发生这种情况?任何想法都欢迎!对不起我的英语不好。

【问题讨论】:

  • 您得到的错误是什么?什么不工作?
  • 是数据问题吗?该查询是否存在数据?
  • 错误是当我在 2016 年 1 月 27 日 15:00:00 和 2016 年 1 月 29 日 01:00:00 之间查询数据时没有返回任何数据,它看起来像时间这里不考虑,当我在 2016 年 1 月 27 日 15:00:00 和 2016 年 1 月 29 日 23:00:00 之间查询数据时,这会返回我的数据....为什么?

标签: php mysql heroku cleardb


【解决方案1】:

您应该结合日期和时间列并制作自定义日期时间字段。然后进行比较。

检查以下查询是否有效。

SELECT 
DISTINCT dates, times, lat, long, ide FROM data 
WHERE ide = 'lcg1234' 
AND CONCAT(`dates`,' ',`times`) >= '2016-01-27 15:00:00' 
AND CONCAT(`dates`,' ',`times`) <= '2016-01-29 01:00:00'
ORDER BY times ASC

【讨论】:

  • 我有这方面的数据,错误是当我在 2016 年 1 月 27 日 15:00:00 和 2016 年 1 月 29 日 01:00:00 之间查询数据时不返回任何数据,看起来这里不考虑时间的第二个参数,当我在 2016 年 1 月 27 日 15:00:00 和 2016 年 1 月 29 日 23:00:00 之间查询数据时,这有效并仅返回我的数据将时间从 01:00:00 更改为 23:00:00.... 为什么?
猜你喜欢
  • 2015-10-01
  • 2013-05-12
  • 1970-01-01
  • 2016-07-10
  • 1970-01-01
  • 2015-04-16
  • 2012-02-01
  • 1970-01-01
  • 2018-05-31
相关资源
最近更新 更多