【问题标题】:Issues getting records between 2 dates(timestamp)在 2 个日期之间获取记录的问题(时间戳)
【发布时间】:2015-05-02 10:53:27
【问题描述】:

我正在尝试统计每个月的记录数。

问题:

1.如果我尝试计算从 (mm/dd/yyyy) 01/01/201503/02/2015 的记录数,它只显示 2 月 (2) 和 3 月 (3) 的记录,有些截断 1 月 (1) .

2.如果我尝试从 2014 年 12 月 1 日到 2015 年 3 月 2 日进行搜索,则查询未显示任何输出。我的表和查询。

我检查了数据库,它有十二月和一月的记录。

Table : works

work_id | desc | create_date (timestamp)  


SELECT count(`work_id`) as tot
    , MONTH(`create_date`)  as mon
FROM `works`
WHERE  bus_id_fk ="'. $_SESSION['bus_id_fk'].'"
    and  DATE_FORMAT(`create_date`,"%m/%d/%Y") BETWEEN "'.  $sd .'" AND "'.  $ed .'"
GROUP BY YEAR(create_date), MONTH(create_date)

NB: $sd = start date, $ed = end date

【问题讨论】:

  • 为什么是dateformat?删除数据格式并尝试与简单的create_date 进行比较。还有startdateenddate的数据类型是什么
  • $sd 和 $ed 是mm/dd/yyyy 形式的用户输入,因此dateformat
  • 如果您的数据类型为日期时间,则在比较时无需格式化

标签: mysql sql date


【解决方案1】:

你可以这样试试吗:

SELECT count(`work_id`) as tot
    , MONTH(`create_date`)  as mon
FROM `works`
WHERE  bus_id_fk ="'. $_SESSION['bus_id_fk'].'"
GROUP BY YEAR(create_date), MONTH(create_date)

您仍然会有差距,即几个月没有记录,但在这些情况下,计数为 0。

【讨论】:

  • 我需要两个日期之间的值,您的代码将提取所有年份和所有月份的记录
猜你喜欢
  • 2014-05-22
  • 2022-11-12
  • 2019-03-14
  • 1970-01-01
  • 2023-03-25
  • 2011-08-12
  • 1970-01-01
  • 2018-02-07
  • 2014-02-17
相关资源
最近更新 更多