I am working on the currency table. I need to get every Friday for the last six months. My query selects every day between two dates. Here my query
x
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;
OUTPUT
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
OUTPUT(Should be)
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
Thanks for helping.
Advertisement
Answer
Not clear if you are looking for Oracle or MS SQL-Server. In case you need it for Oracle you can use
WHERE valid_from > add_months(sysdate,-6)
AND TO_CHAR(valid_from, 'Dy', 'nls_date_language = american') = 'Fri'