Thinking about a similar problem, I wrote the following question to your question:
select decode(to_char(from_tz(cast (sysdate as timestamp),'CET'),'TZR'),
to_char(from_tz(cast (sysdate as timestamp),'CET'),'TZD'),'N','Y') is_daylight
from dual
Short explanation: I convert the current date (sysdate) into my time zone ("CET") into a timestamp and compare the common name ("TZR") and the daylight saving time name ("TZD") of the time zone. If they match, then sysdate is not in daylight, and if they do not match (for example, sysdate-100 is "CEST" for the CET time zone), then the date is in daylight saving time. Date and time zone can be a query parameter.
source
share