Sql 获取一个月的最后时间戳

Sql 获取一个月的最后时间戳,sql,amazon-redshift,Sql,Amazon Redshift,CREATE TABLE PaL ( id SERIAL PRIMARY KEY, event_date DATE ); INSERT INTO PaL (event_date) VALUES ('2020-01-01'), ('2020-02-05'), ('2020-03-20'), ('2020-04-15'), ('2020-05-11'), ('2020-06-18'), ('2020-07-19'), ('2020-12-31'); 预期结果: event_d

CREATE TABLE PaL (
    id SERIAL PRIMARY KEY,
    event_date DATE
);

INSERT INTO PaL
(event_date)
VALUES 

('2020-01-01'),
('2020-02-05'),
('2020-03-20'),
('2020-04-15'),
('2020-05-11'),
('2020-06-18'),
('2020-07-19'),
('2020-12-31');
预期结果:

event_date            |   last_timestamp_of_the_month        |
----------------------|---------------------------------- ---|-----------
2020-01-02            |       2020-01-31 23:59:59            |    
2020-02-05            |       2020-02-29 23:59:59            |   
2020-03-20            |       2020-03-31 23:59:59            |    
2020-04-15            |       2020-04-30 23:59:59            |
2020-05-11            |       2020-05-31 23:59:59            |    
2020-06-18            |       2020-06-30 23:59:59            |  
2020-07-19            |       2020-07-31 23:59:59            | 
2021-12-31            |       2020-12-31 23:59:59            | 

在结果中,我想得到事件日期每个月的最后一个时间戳
因此,我尝试使用以下查询:

SELECT 
DATEADD(day, -1, DATEADD(month, +1, date_trunc('month', pl.event_date)))::timestamp AS last_timestamp_of_the_month
FROM PaL pl
查询已经给了我一个月的最后一天
但是,它不是将
23:59:59
赋值给它,而是将
00:00:00
赋值给它


我需要如何更改查询以在每个日期后获得预期结果中的
23:59:59

因为我没有访问任何红移平台,所以不能确定,但下面的查询应该可以工作。请试试这个。与其减去一天,不如减去一秒钟

SELECT 
DATEADD(sec, -1, DATEADD(month, +1, date_trunc('month', pl.event_date)))::timestamp AS last_timestamp_of_the_month
FROM PaL pl

@请让我知道你的反馈。