【问题标题】:Mysql daily downloads counterMysql每日下载计数器
【发布时间】:2023-03-03 04:40:01
【问题描述】:

我有点迷茫,无法正确思考这个 sql

我有

表格: userid , counter , date 和

我需要检查用户在过去 24 小时内下载了多少文件,启动 sql

SELECT SUM(counter) FROM download_log WHERE userid = 258 AND date = DATE(NOW())

但它返回 null ,我下载了最少 40 个文件,
日期表中的日期格式为

2012-05-05 01:59:55

我也试过了,date = NOW()

同样的事情 我错过了什么?

谢谢!

【问题讨论】:

标签: mysql datetime


【解决方案1】:

会不会:

SELECT SUM(counter) FROM download_log where userid = 258 and date >= DATE_SUB(NOW(), INTERVAL 24 HOUR);

您必须获取过去 24 小时内的所有行。

【讨论】:

  • 我认为你的方法是正确的,但我的 SQL 语法出现错误;
  • 我修正了一个错字,函数应该是 DATE_SUB,而不是 DATE_SUM。
【解决方案2】:

试试这样的:

SELECT SUM(counter) FROM download_log WHERE userid = 258 AND date = CURDATE()

应该可以的。

【讨论】:

  • currdate 仅适用于此组合 AND DATE(date) = CURDATE(),谢谢
【解决方案3】:

我猜你将日期和时间存储在名为 date 的列中,所以它应该可以工作:

SELECT SUM(counter) FROM download_log WHERE userid = 258 AND 
DATE(`date`)= DATE(NOW())

【讨论】:

  • 这很完美,但我想知道,这应该是 24 小时吧?
  • 这实际上并没有返回过去 24 小时内下载的 #files ;它返回今天下载的#files(它可能是也可能不是你想要的)。如果您需要从现在起正好 24 小时,则应该是 WHERE date > NOW() - INTERVAL 24 HOUR AND date < NOW()。此外,“日期”应使用反引号。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
相关资源
最近更新 更多