SQLで週末かどうかを確認するにはどうすればよいですか?sysdate
これを使って数値に変換できることはわかっています
SQL> select to_char(sysdate, 'd') from dual;
TO_CHAR(SYSDATE,'D')
しかし、今日が6か7かを確認する方法がよくわかりません。
使用しないでくださいTO_CHAR
とD
、それが依存するように、このための書式モデルNLS_TERRITORY
セッションパラメータ。
たとえば、SYSDATE = 2018-09-10
(月曜日)の場合:
ALTER SESSION SET NLS_TERRITORY = 'France';
SELECT TO_CHAR( SYSDATE, 'D' ) FROM DUAL;
出力され1
ますが、異なる地域で同じクエリが使用されます。
ALTER SESSION SET NLS_TERRITORY = 'America';
SELECT TO_CHAR( SYSDATE, 'D' ) FROM DUAL;
出力2
。
代わりに、使用することができますTRUNC
し、IW
書式モデル:
SELECT TRUNC( SYSDATE ) - TRUNC( SYSDATE, 'IW' ) FROM DUAL
0
月曜日(および1
火曜日...6
日曜日)の出力であり、NLS_TERRITORY
設定とは無関係です。
したがって、これをフィルタリングして、週末を次のように指定できます。
SELECT *
FROM DUAL
WHERE TRUNC( SYSDATE ) - TRUNC( SYSDATE, 'IW' ) IN ( 5, 6 )
または
SELECT *
FROM DUAL
WHERE SYSDATE - TRUNC( SYSDATE, 'IW' ) >= 5
TO_CHAR
(0インデックスではなく)からの期待される出力との整合性のために1インデックスの日が必要な場合は、値に1を追加するだけです。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加