0

第二次尝试这个,我就是不明白。

我想删除毕业日期已过的毕业生 vs $today 所以我想将记录集限制为仅在数据库中的日期是过去的那些。

我的表将 gradMonth 和 gradYear 存储为 varchar,即 2013 年 6 月。

所以,$today = strtotime(date("Y-F"))。这可以按预期工作并产生 1378008000 。

我想连接 gradMonth,gradYear 的表字段值并将它们与$today. 所以我的查询是:

SELECT 
    gradYear, gradMonth 
FROM 
    myTable 
WHERE 
    UNIX_TIMESTAMP(CONCAT_WS('-', gradYear, gradMonth, '01')) < '$today'

奇怪的是,这始终包括 2014 年 10 月和其他不小于 $today 的月份的记录,我不知道为什么。

感谢您提供的任何想法或帮助。

4

2 回答 2

1

你可以这样做:

SELECT gradYear, gradMonth FROM myTable WHERE date_format(CONCAT(gradYear,'-',gradMonth,'-01 00:00:00'),'%Y-%m') < date_format(CURRENT_TIMESTAMP(),'%Y-%m')
于 2013-09-16T20:56:13.077 回答
1

一种更 MySQL 原生的方法:

WHERE DATE(CONCAT_WS('-', gradYear, gradMonth, '01')) < ?

strtotime(date("Y-m-d")为该占位符提供参数。

如果将gradYearand转换gradMonth为适当的DATE列,则此查询将如下所示:

WHERE gradDate < ?

我不确定"Y-F"这种格式是如何工作的,因为它会产生"2013-January"无法正确排序的东西,就像"April"当年的第一个月 ASCII 一样。

于 2013-09-16T21:23:11.113 回答