假设我有一个表,它有存储CURRENT_TIMESTAMP
的列。我正在使用PHP代码来显示:
- 记录今天输入
- 本月输入的记录
知道吗?
您需要适当的方式来表示
WHERE record_timestamp >= something
在"今天"的情况下,something
应为CURDATE()
。这将返回今天午夜之后的所有记录。
在"本月"的情况下,something
应为
DATE_FORMAT(CURDATE(), '%Y-%m-01')
选择本月第一天的午夜。
再进一步,你会得到这样的"昨天":
WHERE record_timestamp >= CURDATE() - INTERVAL 1 DAY
AND record_timestamp < CURDATE()
你得到的"上个月"是这样的:
WHERE record_timestamp >= DATE_FORMAT(CURDATE(), '%Y-%m-01') - INTERVAL 1 MONTH
AND record_timestamp < DATE_FORMAT(CURDATE(), '%Y-%m-01')
一个细节:因为您使用的是TIMESTAMP
数据类型,所以所有这些计算都将使用您与MySQL服务器连接的当前时区设置来执行。
您可以获得这样的记录:
SELECT * FROM table WHERE dateColumn > DATE_SUB(NOW(), INTERVAL 1 DAY);
SELECT * FROM table WHERE dateColumn > DATE_SUB(NOW(), INTERVAL 1 MONTH);
您可以应用以下查询:
-
要获得今天的记录。
select * from table where DATE( from_unixtime( date_column )) = '2016-01-06';
-
获取特定月份的记录。
SELECT * FROM table WHERE MONTH( from_unixtime( date_column )) = month_no;
要获得今天的记录:-
SELECT * FROM `table` WHERE date_format(`created`,'%Y-%m-%d') = CURDATE();
要查找当前月份的记录,请执行以下操作:-
从时间戳列中选择当前月份记录mysql
如果您想获得今天输入的记录,那么取今天的日期&将时间附加为00:00:00,然后计算时间戳并将其存储在变量$start中,类似地,通过将时间添加为24:00:00&在sql中,传递where子句,条件为date>=$start和date<=$终止
同样的逻辑,你可以通过获取月的第一个日期时间戳和月的结束日期时间戳来应用。
希望这对你有帮助。
使用函数num_rows完成PHP代码,如下所示。
$conn = new mysqli($servername, $username, $password, $database);
$SQL = "SELECT * FROM table WHERE column > DATE_SUB(NOW(), INTERVAL 1 DAY)";
$results = $conn -> query($SQL);
if($results -> num_rows > 0){
$noOfResults = $results -> num_rows;
}
else{
$noOfResults = 0;
}
echo $noOfResults;
如果你想要上个月的结果,只需使用INTERVAL 1 month,而不是@devpro answer所说的1 DAY。