簡體   English   中英

PostgreSQL:如何檢查日期字段是否與今天匹配?

[英]PostgreSQL: How to check if day in date field matches today?

我想在創建記錄的同一個月每月發送一封電子郵件。 問題是,如果記錄是在一個月的29日,30日或31日創建的,則電子郵件可能不會發送出去。 如何檢查日期字段是否與今天匹配,否則,如果當前月份不存在該日期,那么如何檢查今天是否是該月的最后一天?

供參考,這是一個示例表:

CREATE TABLE charges (
  id INTEGER,
  dt_created TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
)

這是一個SQL調用,該調用將在1-28天有效:

SELECT id FROM charges WHERE extract(day from dt_created) = extract(day from now())

幼稚的實現可能看起來像:

with dt as (select '2014-03-31'::date dt_created, '2014-02-28'::date now)

select
case when extract(day from (date_trunc('MONTH', now) + INTERVAL '1 MONTH - 1 day')) = extract(day from now)
then extract(day from dt_created) >= extract(day from now)
else extract(day from dt_created) = extract(day from now)
end matches
from dt

因此,您首先要檢查當前日期是否是該月的最后一天。 如果是這樣,請檢查創建的日期是否與該日期匹配或在該日期之后,否則請檢查其是否完全匹配

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM