0

我有内部查询,它根据条件之间的日期返回指定的日期。我成功获得了结果,但在外部查询中我想检查日期是否在我提供的字符串中-'星期五,星期六'

SELECT * from 
    (
    SELECT id, to_char(markupdate, 'Day') as dayofweek 
    FROM test t 
    WHERE t.markupdate BETWEEN 'Thu Jul 11 00:00:00 IST 2019' AND 'Sat Jul 20 00:00:00 IST 2019'
    ) data
    WHERE data.dayofweek in ('Friday,Sunday');
4

2 回答 2

1

您可以使用正则表达式来匹配您data.dayofweek要查找的字符串 ( Friday, Sunday)。你甚至不需要你的子查询,类似的东西也应该起作用:

 SELECT id, to_char(markupdate, 'Day') as dayofweek 
 FROM test t 
 WHERE t.markupdate BETWEEN '2019-07-11 00:00:00+0530' AND '2019-07-20 00:00:00+0530'
 AND dayofweek~'(Friday|Sunday)';

有关更多背景信息,请查看Postgres 文档

于 2019-07-18T08:29:39.697 回答
1
SELECT id, to_char(markupdate, 'Day') as dayofweek 
FROM test t 
WHERE t.markupdate BETWEEN 'Thu Jul 11 00:00:00 IST 2019' AND 'Sat Jul 20 00:00:00 IST 2019' 
AND date_part('dow', markupdate) in (5,0);

postgres 中的星期日期返回值如下:

0 Sunday
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday

代替date_part('dow', markupdate)你可以使用更标准的 SQL EXTRACT('dow' FROM markupdate),但dow它是一个扩展,而不是 SQL 标准的一部分。

于 2019-07-18T08:34:13.873 回答