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