MySQL选择昨天的日期

标签 mysql

如何显示和计算日期为昨天的值? 我使用 time() 在数据库中插入日期。示例:

URL: google.com youtube.com google.com youtube.com test.com youtube.com
DateVisited: 1313668492 1313668540 1313668571 13154314

我想显示表中存在多少个 URL,以及昨天访问了多少个 URL。示例结果:

LINK       | timesExisted | timesVisitedYesterday
Google.com |       2      | 2
youtube.com|       3      | 3

我已经有了获取昨天日期的想法,但我不知道如何计算一个 URL 在昨天存在多少次,以及计算一个 URL 在表中存在多少次。

最佳答案

获取昨天日期的最简单和最好的方法是subdate :

subdate(current_date, 1)

您的查询将是:

SELECT 
    url as LINK,
    count(*) as timesExisted,
    sum(DateVisited between UNIX_TIMESTAMP(subdate(current_date, 1)) and
        UNIX_TIMESTAMP(current_date)) as timesVisitedYesterday
FROM mytable
GROUP BY 1

出于好奇,sum(condition) 为您提供满足条件的行的 count 的原因,否则需要繁琐而冗长的 case 语句,在 mysql 中 bool 值是 1 代表真, 0 代表假,因此对条件求和有效地计算了它为真的次数。使用这种模式可以整理你的 SQL 代码。

关于MySQL选择昨天的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7146828/

相关文章:

mysql - 更改月份的sql查询

php - 跟踪页面浏览量并显示每日、每周、每月的结果

mysql - 从相关表中选择最大值

mysql - 从没有连接的多个表中选择?

mysql - 使用另一个表中的 ID 创建新表条目

php代码查询完成后执行else语句

python - Scrapy 传递参数并写入 MySQL

mysql - Perl MySQL - 如何拆分搜索字符串并与 LIKE %$word1%$word2% "dynamically"匹配?

mysql - 观察到 MySQL 出现一些奇怪的情况...查询突然变得 super 快

MySQL 5.7.20 - SELECT FOUND_ROWS() 返回错误结果