我有一个使用 MySQL 的应用程序。我有一份报告显示了过去 24 小时的记录。我使用了以下查询:
WHERE (DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= FROM_UNIXTIME(`workorder`.`CREATEDTIME` / 1000))
现在我必须使用 PostgreSQL 并且不知道如何制作过去 24 小时的报告。你们中的任何人都可以帮忙吗?
我有一个使用 MySQL 的应用程序。我有一份报告显示了过去 24 小时的记录。我使用了以下查询:
WHERE (DATE_SUB(CURDATE(), INTERVAL 1 DAY) <= FROM_UNIXTIME(`workorder`.`CREATEDTIME` / 1000))
现在我必须使用 PostgreSQL 并且不知道如何制作过去 24 小时的报告。你们中的任何人都可以帮忙吗?
WHERE workorder.createdtime > current_date - 1 -- Yesterday and today
WHERE workorder.createdtime > current_timestamp - interval '1 day' -- last 24hr
> TIMESTAMP 'yesterday'
为方便起见,Postgres 包含一些硬编码值作为特殊的日期/时间输入。它们包括:
yesterday
today
tomorrow
now
试试SELECT TIMESTAMP 'now'
。
例如,这是一个查询。
SELECT when_row_created_
FROM customer_
WHERE when_row_created_ > TIMESTAMP 'yesterday'
ORDER BY when_row_created_ DESC
;
这些命令可能不适合生产代码,但它们在开发中肯定很方便。阅读文档并进行一些练习,以确保您了解这些命令的行为、会话的时区如何影响它们等等。
缺点包括 (a) 隐式忽略时区的关键问题,以及 (b) 不是标准 SQL。
where workorder.createdtime >= now() - interval '24 hour'
WHERE workorder.createdtime::date = current_date - 1; --from yesterday