首页 > 解决方案 > 如何选择过去六个月的每个星期五?

问题描述

我正在研究货币表。 在过去的六个月里,我需要每个星期五去。我的查询选择两个日期之间的每一天。这是我的查询

SELECT valid_from,
       currency_code,
       currency_rate
 FROM currency_rate
 WHERE valid_from > add_months(sysdate,-6) --Selects every day
 AND currency_code IN ('USD', 'EUR','CAD','GBP','JPY') 
 AND currency_type IN ('MBDS')
 ORDER BY currency_code,valid_from;

输出

1   23/07/2019  CAD 4.3561
2   24/07/2019  CAD 4.3368
3   25/07/2019  CAD 4.3636
4   26/07/2019  CAD 4.3539
5   27/07/2019  CAD 4.3059
6   28/07/2019  CAD 4.3059
7   29/07/2019  CAD 4.3059
8   30/07/2019  CAD 4.2849
9   31/07/2019  CAD 4.2429
10  01/08/2019  CAD 4.214
..  ../../....  CAD ......
..  ../../....  CAD ......
..  ../../....  CAD ......
173 21/01/2020  CAD 4.5281

输出(应该是)

1   26/07/2019  CAD 4.3561
2   02/08/2019  CAD 4.3368
3   09/08/2019  CAD 4.3636
4   16/08/2019  CAD 4.3539
5   23/08/2019  CAD 4.3059
6   ..........  CAD ......
7   ..........  CAD ......
..  ..........  CAD ......
..  ..........  CAD ......
..  10/01/2020  CAD ......
..  17/01/2020  CAD ......

感谢您的帮助。

标签: sqloracle

解决方案


不清楚您是在寻找 Oracle 还是 MS SQL-Server。如果您需要它用于 Oracle,您可以使用

WHERE valid_from > add_months(sysdate,-6)
   AND TO_CHAR(valid_from, 'Dy', 'nls_date_language = american') = 'Fri'

推荐阅读