【问题标题】:PHP Select database rows from current month and display them with foreach()PHP 从当前月份选择数据库行并使用 foreach() 显示它们
【发布时间】:2014-10-31 15:33:50
【问题描述】:

我正在为我的网站制作支付系统,我需要一种方法来从数据库中选择所有内容,其中月份和年份与当前月份和年份相同。我的日期格式为 dd/mm/yyy 或 例如 2010 年 1 月 1 日。

完成后,我需要使用 foreach() 循环显示所有结果。怎么可能做到这一点?我试过在 mysql_query 中使用 LIKE 函数,但它只是输出错误。

这是我想出的一些代码:

date_default_timezone_set('UTC');

$today = date("d-m-Y"); // Output something like 21-10-2014 for finding matching rows
    $today_compare = substr($today, 2, 8);

$fetch_donate = mysql_query("SELECT * FROM `shop_payments` WHERE date LIKE '%today_compare%");

【问题讨论】:

  • 日期是否以该格式存储在您的数据库中?作为 dd/mm/yyyy?还是它们是 php 时间戳?
  • 您需要提供您的 MySQL 语句!和任何其他相关代码
  • 它们也以这种格式存储(我来自丹麦)。时区为 UTC。
  • @cmorrissey 刚刚添加了一些代码
  • 您应该强烈考虑将您的日期/时间存储在数据库中的适当日期、日期时间等字段中。如果您使用字符串字段并且有多种格式,您将找不到合理的解决方案。

标签: php mysql sql date


【解决方案1】:

我会给你一个答案,基于你可以将数据库中的日期字段更改为实际上是日期数据类型字段的假设。我还将假设您将列名更改为非保留字 datepayment_date 之类的名称。这只是一个养成的好习惯——不要将数据库对象命名为与保留字相同的名称。

查询可以这么简单:

SELECT *
FROM `shop_payments`
WHERE `payment_date` LIKE CONCAT(YEAR(NOW()), '-', MONTH(NOW()), '%')

【讨论】:

  • 谢谢,它工作得很好 :) 我把它改成 payment_date 并将 mysql 列改成 DATE 而不是 CHAR :)
猜你喜欢
  • 2014-12-22
  • 2018-03-02
  • 2021-03-26
  • 2019-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
相关资源
最近更新 更多