【问题标题】:Get rows with timestamp from current week in Postgres?在 Postgres 中从当前周获取带有时间戳的行?
【发布时间】:2021-01-12 11:33:54
【问题描述】:

我正在尝试建立一个每周排行榜,并且想知道如何获得具有当前一周(周一至周日)内时间戳的行。我试过了:

SELECT id, COUNT(*) FROM Data WHERE created::date BETWEEN date $1 and date $2 GROUP BY id ORDER BY COUNT(*) DESC LIMIT 10;

但是我陷入了如何在不硬编码的情况下在本周内获得这些行的问题上。 createdTIMESTAMP 类型的列。

我看到 MySQL 中有一个叫做YEARWEEK() 的东西。 Postgres 中是否有等价物?如果没有,我该怎么做才能得到想要的结果?

【问题讨论】:

  • 如果有必要,我很乐意澄清任何事情或提供更多信息。提前致谢!

标签: sql postgresql


【解决方案1】:

您可以将date_trunc() 与“周”一起使用:

where created >= date_trunc('week', now())

这假设将来没有创建的时间戳。 Postgres 遵循 ISO 标准,即每周从星期一开始,这正是您想要的。

【讨论】:

  • 我对 Postgres 函数不是很熟悉,但是如果 NOW() 是星期二,它是否仍然会给我从本周星期一到星期二而不是从上周星期二到本星期二的结果?如果这是有道理的。
  • @Californium 。 . .是的。 date_trunc('week', now()) 返回周日和周一之间最近的午夜 - 一周的开始。
猜你喜欢
  • 1970-01-01
  • 2020-12-10
  • 2021-12-04
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
  • 2012-03-04
  • 2011-01-31
  • 2012-03-23
相关资源
最近更新 更多