Day of the week: Difference between revisions
Content added Content deleted
m (→{{header|Ruby}}: Removed comment about outdated version) |
|||
Line 5,314: | Line 5,314: | ||
=={{header|SQL}}== |
=={{header|SQL}}== |
||
=={{header|Oracle}}== |
|||
SQL has good support for date functions; care must be taken with NLS settings (globalization support), in the code below the date format language is passed in as an argument to the relevant function. (Or, see a variation that does not depend on language settings, after the output shown below.) |
SQL has good support for date functions; care must be taken with NLS settings (globalization support), in the code below the date format language is passed in as an argument to the relevant function. (Or, see a variation that does not depend on language settings, after the output shown below.) |
||
Line 5,353: | Line 5,354: | ||
Alternatively, the WHERE clause can be written in a way that avoids the complication of language settings. The (overloaded) TRUNC function, as applied to dates, takes a second argument indicating "to what" we must truncate. One option is 'iw' for "ISO week"; this truncates to the most recent Monday (the beginning of the ISO standard week, which is Monday through Sunday by definition). Like so (replace in the query above): |
Alternatively, the WHERE clause can be written in a way that avoids the complication of language settings. The (overloaded) TRUNC function, as applied to dates, takes a second argument indicating "to what" we must truncate. One option is 'iw' for "ISO week"; this truncates to the most recent Monday (the beginning of the ISO standard week, which is Monday through Sunday by definition). Like so (replace in the query above): |
||
<syntaxhighlight lang="sql">where dt - trunc(dt, 'iw') = 6</syntaxhighlight> |
<syntaxhighlight lang="sql">where dt - trunc(dt, 'iw') = 6</syntaxhighlight> |
||
=={{header|SQLite3}}== |
|||
<syntaxhighlight lang="sql">WITH RECURSIVE cte AS ( |
|||
SELECT DATE('2008-12-25', '+'||(12*0)||' months') as dt, 1 AS level |
|||
UNION ALL |
|||
SELECT DATE('2008-12-25', '+'||(12*level)||' months') as dt, c.level + 1 |
|||
FROM cte c |
|||
WHERE c.level <= 2121 - 2008 + 1 |
|||
) |
|||
SELECT strftime('%Y', dt) |
|||
FROM cte |
|||
where strftime('%w', dt) = '0'; |
|||
</syntaxhighlight> |
|||
=={{header|PostgreSQL}}== |
|||
<syntaxhighlight lang="sql"> WITH RECURSIVE cte AS ( |
|||
SELECT date '2008-12-25' + interval '12 month' * 0 as dt, 1 AS level |
|||
UNION ALL |
|||
SELECT date '2008-12-25' + interval '12 month' * level as dt, c.level + 1 |
|||
FROM cte c |
|||
WHERE c.level <= 2121 - 2008 + 1 |
|||
) |
|||
SELECT dt |
|||
FROM cte |
|||
where to_char(dt, 'Dy') = 'Sun'; |
|||
</syntaxhighlight> |
|||
=={{header|Standard ML}}== |
=={{header|Standard ML}}== |