mysql - 如何只显示当前的记录

标签 mysql sql time timestamp where-clause

我只想选择当天的记录。这样我每天就可以看到有多少访客(“bezoekers”)。

这是我使用的代码:

Select FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') "Datum (Descending)", 
COUNT(DISTINCT address) "Bezoekers"  
FROM sensordata1  
ORDER BY 1
FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') DESC

我尝试过:

Select FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') "Datum (Descending)",
COUNT(DISTINCT address) "Bezoekers"  
FROM sensordata1  
WHERE 1, DATE('Datum') = DATE(CURDATE() 
ORDER BY 1
FROM_UnixTime((sensordata1.time), '%Y-%c-%d-%H') DESC

我想要什么:

Datum         | Bezoekers
2017-4-20-15  | 31
2017-4-20-14  | 34
2017-4-20-13  | 20
2017-4-20-12  | 26

我不想要其中包含例如 2017-04-21 的内容。 如果我第二天回来,它必须是从那天开始,所以你不能设定日期。

最佳答案

您缺少GROUP BY。如果您想要每个 FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') 一个结果行,则按其分组。

Select
  FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') AS "Datum (Descending)", 
  COUNT(DISTINCT address) AS "Bezoekers"  
FROM sensordata1  
GROUP BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H')
ORDER BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') DESC;

仅当天相同(添加了相应的 WHERE 子句):

Select
  FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') AS "Datum (Descending)", 
  COUNT(DISTINCT address) AS "Bezoekers"  
FROM sensordata1  
WHERE FROM_UnixTime(sensordata1.time, '%Y-%m-%d') = curdate()
GROUP BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H')
ORDER BY FROM_UnixTime(sensordata1.time, '%Y-%c-%d-%H') DESC;

关于mysql - 如何只显示当前的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43539533/

相关文章:

mysql - 如何在Mysql中选择存储过程的某些列

mysql - 查询获取所有记录,直到列的总和小于或等于一个值

sql - Oracle 直接加载插入 54,061,487 条记录

mysql - 按时间聚合记录

mysql - 联合具有缺失值的集合 laravel

java - 无法执行语句; SQL [不适用];约束[空];嵌套异常是 org.hibernate.exception.ConstraintViolationException :

php - 如何将大型 sql 文件导入 mysql 表

PHP:时间段,早上和晚上各多少时间?

node.js - 为什么node.js服务器上的日期函数输出错误?

ruby-on-rails - 在 Ruby on Rails 中,DateTime、Timestamp、Time 和 Date 之间有什么区别?