【问题标题】:MySQL select data between two days which has php time() valuesMySQL在两天之间选择具有php time() 值的数据
【发布时间】:2014-04-12 17:19:16
【问题描述】:

我有一张表,有这样的数据

ID invoice_date amount
1  1392522748     58
2  1392486327     95

invoice_date 字段使用 php time() 函数存储日期值,我需要获取一些数据,

ex - 在两个数据之间,每月,每年使用 mysql 查询,任何人都知道如何做到这一点。谢谢

【问题讨论】:

  • invoice_date的数据类型是什么?
  • Doh.... varchar... :(
  • 那是一个糟糕的数据库结构,您如何使用 STR_TO_DATE(),但我建议使用 datetime 作为日期字段,这样可以让生活变得简单。
  • 这不是我的创作,它已经由我厌倦了很少报告的人完成了 :)

标签: php mysql


【解决方案1】:

PHP time() 函数存储自 Unix EPOCHE 以来的秒数。如果您将这些存储为字符串,则可以使用FROM_UNIXTIME() 将其转换为真实日期。例如:

  SELECT * FROM tablename 
     WHERE FROM_UNIXTIME(invoice_date) BETWEEN '2014-01-02' AND '2014-01-04';

注意,FROM_UNIXTIME() 将否定您在上面示例中的 invoice_date 上的任何索引。

正如您的 OP cmets 中所述,您最好的做法是将列转换为正确的 datetimetimestamp

【讨论】:

  • @user2873965 没问题,只要记住这个表开始增长对索引的影响!
猜你喜欢
  • 1970-01-01
  • 2012-03-25
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
  • 1970-01-01
  • 2012-04-29
  • 1970-01-01
  • 2021-01-18
相关资源
最近更新 更多