chosen_month
バインド・パラメータとしてヶ月以内に渡すと、日付値、そして(それ以外TO_DATE()
を使用)datefrom
と仮定するとdateto
はDATE
データ型を持っている、あなたが使用することができます与えられた年渡し、
SELECT t.*,
CASE WHEN datefrom <= TRUNC(:chosen_month, 'MM')
AND dateto >= ADD_MONTHS(TRUNC(:chosen_month, 'MM'), 1)
THEN 1
ELSE 0
END AS fullmonth
FROM table_name t
するか、とあなたは、行の今年
のためにそれを検討したい場合は、
WITH chosen_date (dt) AS (
SELECT TO_DATE(
TO_CHAR(:chosen_year, '0000')
|| TO_CHAR(:chosen_month, '00')
|| '01',
'YYYYMMDD'
)
FROM DUAL
)
SELECT t.*,
CASE WHEN datefrom <= c.dt
AND dateto >= ADD_MONTHS(c.dt, 1)
THEN 1
ELSE 0
END AS fullmonth
FROM table_name t
CROSS JOIN
chosen_date c
または:月、その後、数字など
SELECT t.*,
CASE WHEN datefrom <= month_start
AND dateto >= ADD_MONTHS(month_start, 1)
THEN 1
ELSE 0
END AS fullmonth
FROM (
SELECT t.*,
ADD_MONTHS(TRUNC(datefrom, 'Y'), :chosen_month - 1) AS month_start
FROM table_name t
) t
注:from=2016-02-01, to=2016-02-29
を月全体に適用すると考えると、ADD_MONTHS
関数をLAST_DAY
に置き換えてください。
出典
2017-01-10 10:51:08
MT0
ロジックは – Rahul
@Rahul IVEはもう少しを追加しましたけれども、まだ明確ではありません。 – Matt
あなたの 'datefrom'と' dateto'はvarcharと思われます。もしそうなら、それをしないでください! –