【问题标题】:Fetch the data from my MySQL database for the current month [duplicate]从我的 MySQL 数据库中获取当月的数据 [重复]
【发布时间】:2020-11-15 11:03:50
【问题描述】:

我想从我的 MySQL 数据库中获取当月的数据。

在数据库中,我有一列 next_due 存储下个月的日期。

现在,如果假设此列是13-Nov-2020,并且今天是 2020 年 11 月 13 日,代码应该显示那些到期日期为 2020 年 11 月 13 日的人的数据。

这是我的查询:

SELECT * FROM new_regis WHERE MONTH(next_due) = MONTH(CURRENT_DATE())
AND YEAR(next_due) = YEAR(CURRENT_DATE())

但这不起作用。

【问题讨论】:

  • 使用具有正确格式时间戳的真实时间戳列可能会更简单。
  • 你的日期真的是那种格式吗?

标签: mysql


【解决方案1】:

您确实应该将日期存储在DATE 类型的列中。这会让你的生活变得更简单。

幸运的是,MySQL 具有内置函数来帮助您处理以文本形式存储的日期。 MONTH(next_due) 不起作用,因为 MySQL 不知道如何将 next_due 解析为日期值。您必须首先告诉它:MONTH( STR_TO_DATE(next_due, '%d-%b-%Y') )

STR_TO_DATE 函数会将字符串解析为日期,给出如何解析字符串的格式说明符。如果您的日期是两位数,那么 %d-%b-%Y 格式说明符应该与您的格式匹配。如果您将日期存储为5-Nov-2020(当天只有一个数字),请使用%e 而不是%d。您的格式的完整选项列表与文档中的 DATE_FORMAT 函数一起列出。

因此,以下查询应该适合您的目的:

SELECT * FROM new_regis WHERE MONTH(STR_TO_DATE(next_due, '%d-%b-%Y')) = MONTH(CURRENT_DATE())
AND YEAR(STR_TO_DATE(next_due, '%d-%b-%Y')) = YEAR(CURRENT_DATE())

【讨论】:

  • 这个问题只需要STR_TO_DATE() 指导。 Stack Overflow 上有几个页面包含此建议。请帮助我们解决多余的问题。谢谢。
【解决方案2】:

我认为最好只处理时间戳。

  • 将 next_due 文件存储为时间戳。
  • $today=time()。
  • 从数据库中获取并进行比较。


$sql = "SELECT here";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
  // output data of each row

  while($row = $result->fetch_assoc()) 
{
$next_due=$row['next_due'];
$today=time()
$data=array();
if ($next_due==$today)
{
//True show data here
$data['id']=$row['id'];
$data['name']=$row['name'];

print_r"$data";

}

else
{
//False
print"Sorry not current day.";
}

  }
}
 else {
  echo "0 results";
}



【讨论】:

    【解决方案3】:

    要获取当前月份的数据,您可以使用

    SELECT * FROM users WHERE MONTH(2020-05-15 17:36:38) = 5
    

    这里 5 是您可以从 PHP 获取的当前月份

    【讨论】:

    • 为什么要减去投票!减号只是不鼓励提供帮助
    • 我怀疑有人投了反对票,因为查询不起作用(引号丢失),而且提出问题的人有不同的日期格式,这对任何一个都不起作用。将您的答案与明确显示如何使用该格式的已接受答案进行比较。
    • 我只是给他一个想法,他首先写道:我想获取当前月份的数据。我没有使用的报价清晰可见,一个开发人员可以很容易地理解这一点。
    • @SKS 您可以选择在此处留下您的答案或将其删除。不管怎样,这个多余的页面很可能会被完全删除。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-02
    • 1970-01-01
    • 1970-01-01
    • 2020-04-26
    • 2017-02-11
    • 1970-01-01
    相关资源
    最近更新 更多