如何在sql中使用unix时间戳选择本周的数据?

dgenwo3n  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(343)

我的数据库中有两列名为 dtp_s 以及 dtp_e . 这两列都适用 strtotime() 格式化的int,然后我在php应用程序中使用它来计算时间间隔之间的小时/分钟。
我想按日期顺序显示5条最新记录,使用此命令时效果良好:

SELECT id
FROM _records
ORDER BY dtp_s DESC
LIMIT 5

但是,我现在要转换 dtp_s 在我的查询中返回到datetime格式,只提取该周的数据。我有一个问题是记录每周配额,我的想法是抽出5个记录涵盖周一至周五(这是所有需要和上传),但下周一将显示前几周周二,周三,周四和周五以及。
我试着用 date_sub 间隔一周,但这似乎只适用于datetime数据类型列,而不是unix时间戳:

SELECT id
FROM _records
WHERE dtp_s > DATE_SUB(NOW(), INTERVAL 1 WEEK);
ORDER BY dtp_s DESC
LIMIT 5

如何通过将格式化的datetime转换回datetime格式来只选择当前周的数据?我很感激你的帮助。
我的一个例子 dtp_s 以及 dtp_e 是:
1595570400 1595584800

62lalag4

62lalag41#

可以使用date函数将筛选器值转换为unix时间戳 unixtimestamp() ,就像这样:

where dtp_s > unix_timestamp(now() - interval 1 week)
vzgqcmou

vzgqcmou2#

实际上,你可以直接使用 unix_timestamp() 无转换:

where dtp_s > unix_timestamp() - 7 * 24 * 60 * 60

尽管 unix_timestamp() 可能非常有用, unix_timestamp(now()) 实际上是多余的。您可以在unix时间戳域中完成整个计算。

相关问题