1

我的代码的想法是获取表中发生在特定月份和年份的所有更新行,例如更新发生在:2012 年 5 月。因为我有 2 个显示月份和年份的下拉菜单,我希望当我选择月份和年份时,将显示在选定月份和年份发生的所有更新行。有没有人可以帮助我解决这个问题的想法,我会很高兴。提示:数据库中存储的日期格式为(Ymd)。

4

2 回答 2

0

提示:不要给我们提示,但要讲整个故事。

您的问题的可能解决方案(适用于 php 5.3+):

<?php
  $startDate = date("Y-m-d", strtotime("first day of the month", strtotime( (int) $_POST['year']."-".(int)$_POST['month'].-"01 00:00")));
  $endDate = date("Y-m-d", strtotime("last day of the month", strtotime( (int) $_POST['year']."-".(int)$_POST['month'].-"01 23:59")));

  $db = ; //your PDO connection

  $q = $db->prepare("SELECT `thingstoselect` FROM `yourtable` WHERE `date` > ? && `date` < ?");
  $q->execute( array( $startDate, $endDate));

  $yourResults = $q->fetchAll();
于 2012-11-12T22:40:47.680 回答
0

您是将其存储为 varchar 还是日期?

如果将其存储为日期列,则可以将 $year 和 $month 变量与:

select * from TABLE where year(datecol) > $year or (year(datecol) = $year and month(datecol) >= $month);

如果它是子字符串,您将不得不为大于做一​​些有趣的转换,但您可以使用子字符串来查找完全匹配:

select * from TABLE where substring_index(stringcol,'-',1) > $year or ( substring_index(stringcol,'-',1) = $year and substring_index(substring_index(stringcol,'-',2),'-',-1) >= $month );

问题是 MySQL 没有内置字符串拆分功能。

于 2012-11-12T22:42:23.293 回答