SELECT *
FROM Conference WHERE date_start ---don't know how to proceed---
Run Code Online (Sandbox Code Playgroud)
如何检查是否date_start已在上个月?谢谢.
a_h*_*ame 26
从当前月份减去一个月,然后将其"截断"到该日期的开头.由于您不希望包含"this"月份的行,因此您还需要为此添加条件
SELECT *
FROM Conference
WHERE date_start >= date_trunc('month', current_date - interval '1' month)
and date_start < date_trunc('month', current_date)
Run Code Online (Sandbox Code Playgroud)
date_trunc('month', current_date - interval '1' month)将返回上个月date_trunc('month', current_date)的第一天,并将返回"此"月的第一天.
小智 5
SELECT * FROM Conference WHERE date_trunc('month', date_start)=
date_trunc('month', current_date - interval '1 month')
Run Code Online (Sandbox Code Playgroud)
小心时区
date_trunc('month', (date_start at time zone 'UTC'))
Run Code Online (Sandbox Code Playgroud)
另外,您可以添加索引以使其更快
CREATE OR REPLACE FUNCTION fn_my_date_trunc(period text,
some_time timestamp with time zone)
RETURNS timestamp with time zone
AS
$BODY$
select date_trunc($1, $2);
$BODY$
LANGUAGE sql
IMMUTABLE;
CREATE INDEX "IdxConferenceDateStart" ON Conference
(fn_my_date_trunc('month', (date_start at time zone 'UTC')));
Run Code Online (Sandbox Code Playgroud)
是的,当然,您必须在请求中使用声明的函数“fn_my_date_trunc”才能自动使用此索引(并将日期时间转换为时区日期时间)
| 归档时间: |
|
| 查看次数: |
14925 次 |
| 最近记录: |