faoxis Asked:2020-09-22 20:49:08 +0800 CST2020-09-22 20:49:08 +0800 CST 2020-09-22 20:49:08 +0800 CST 如何在最后一秒做出选择? 772 我想提出这样的请求: SELECT count(*) FROM loan WHERE country = 'lv' AND created_at > current_timestamp - second(1) 如何用second(1)有效的表达式替换它,以便它在h2and中工作postgres? sql 1 个回答 Voted Best Answer Мелкий 2020-09-22T21:03:28+08:002020-09-22T21:03:28+08:00 不幸的是,在不同的 SQL 实现中,日期和时间的处理没有顺序。试试你的h2时间间隔是否可以: select now() - interval '1 second' 如果他不知道怎么做,那么你可以通过创建这样的函数来教postgresql模仿行为:h2 create function second(int) returns interval immutable strict language sql as $$ select interval '1 second' * $1 $$; 并且问题中给出的查询将正常工作。 一个小小的误会,我们也需要一个请求h2。从文档h2来看,该功能是合适的dateadd,即 可以构建这样的查询: SELECT count(*) FROM loan WHERE country = 'lv' AND created_at > DATEADD('SECOND', -1, current_timestamp) PostgreSQL不知道这样的功能,但您可以创建一个自定义并执行相同的逻辑。 create function dateadd(text, int, timestamp) returns timestamp immutable strict language sql as $$ select $3 + concat($2, ' ', $1)::interval $$; second它完全适用于维度,并且适用于h2它们postgresql使用相同名称的其他时间维度 - 例如, for month。如果时间段的名称postgresql不知道,那么就会出错。
不幸的是,在不同的 SQL 实现中,日期和时间的处理没有顺序。试试你的
h2
时间间隔是否可以:如果他不知道怎么做,那么你可以通过创建这样的函数来教
postgresql
模仿行为:h2
并且问题中给出的查询将正常工作。
一个小小的误会,我们也需要一个请求
h2
。从文档h2
来看,该功能是合适的dateadd
,即 可以构建这样的查询:PostgreSQL
不知道这样的功能,但您可以创建一个自定义并执行相同的逻辑。second
它完全适用于维度,并且适用于h2
它们postgresql
使用相同名称的其他时间维度 - 例如, formonth
。如果时间段的名称postgresql
不知道,那么就会出错。