1

我有一个包含 MONTH 和 TEXT 两列的数据库。

如何显示所有条目,但不显示超过当前月份的月份?(例如,如果我在 3 月、8 月和 12 月有文本,而我们在 8 月,我只希望显示 3 月和 8 月的文本。)

<?php

// select all data at once

$construct ="SELECT * from table WHERE MONTH(DataIntroducere) = ???";
rest of code

?>

我想要这个,因为我将输入未来月份的文本并且我不希望它显示。

4

3 回答 3

1

试试喜欢

$construct ="SELECT * FROM table WHERE MONTH(DataIntroducere) <= ".date('m');

或者在mysql中你可以试试

$construct ="SELECT * from table WHERE MONTH(DataIntroducere) <= MONTH(CURDATE())";

并尽量避免mysql_*声明,因为整个ext/mysql PHP扩展提供了所有以前缀命名的函数mysql_*,从 开始正式弃用,并将在未来PHP v5.5.0被删除。

您可以更好地使用其他两个MySQL扩展:MySQLiPDO_MySQL,其中任何一个都可以用来代替ext/mysql.

于 2013-08-31T09:18:16.270 回答
0

最明智的做法是将日期保存为 unix 时间戳。 http://www.unixtimestamp.com/index.php

大多数编程语言都提供返回 unix 时间戳的方法。然后,您可以将当前月份转换为时间戳并进行如下查询

SELECT * FROM table WHERE month < timestamp_of_current_month
于 2013-08-31T09:18:29.193 回答
0
$construct = "SELECT * FROM table WHERE DATE(DataIntroducere) <= DATE(NOW());

这是(正确的)一个。而且您不必关心 YEAR()、MONTH()、CURDATE() 或其他任何东西。

于 2013-08-31T09:22:47.820 回答