简体   繁体   English

如何显示今天的UNIX_TIMESTAMP中的所有记录

[英]How to display all records from today's UNIX_TIMESTAMP

I'm trying to display all attacks which have happened today. 我正在尝试显示今天发生的所有攻击。 This is the current SQL I have in my php page. 这是我在php页面中拥有的当前SQL。 However it doesn't display how many have happened today. 但是,它不会显示今天发生了多少次。

$TodayAttacks = $odb->query("SELECT COUNT(id) FROM `logs` WHERE `date` BETWEEN DATE_SUB(CURDATE(), INTERVAL '-1' DAY) AND UNIX_TIMESTAMP()")->fetchColumn(0);

If by "today" you mean "since midnight today", your query should look something like this: 如果到“今天”是指“从今天午夜开始”,则查询应类似于以下内容:

SELECT COUNT(id) FROM logs
 WHERE date >= CURDATE();

If there is a possibility of date values in the log greater than today's date (hey, weird stuff happens!) then you want this (I advise against using BETWEEN for date comparisons): 如果日志中的日期值有可能大于今天的日期(嘿,发生奇怪的事情!),那么您想BETWEEN (我建议不要将BETWEEN用于日期比较):

SELECT COUNT(id) FROM logs
 WHERE date >= CURDATE()
   AND date < DATE_ADD(CURDATE(), INTERVAL 1 DAY);

If you mean "within the last 24 hours", your query would look more like this: 如果您的意思是“过去24小时内”,则查询看起来像这样:

SELECT COUNT(id) FROM logs
 WHERE date >= DATE_SUB(NOW(), INTERVAL 1 DAY);

Hope this helps. 希望这可以帮助。

EDITED per comments below 根据下面的评论进行编辑

If the date column is a Unix timestamp value (stored as INT(11) ?) then the query should look something like the following: 如果date列是Unix时间戳记值(存储为INT(11) ?),则查询应类似于以下内容:

SELECT COUNT(id) FROM logs
 WHERE date >= UNIX_TIMESTAMP(CURDATE());

One could also do the following to get records from the last 24 hours: 还可以执行以下操作以获取最近24小时的记录:

SELECT COUNT(id) FROM logs
 WHERE date >= UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 DAY));

SQL Fiddle here . SQL Fiddle在这里

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM