|
- <?xml version="1.0" encoding="UTF-8" standalone="no"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>B.5. POSIX Time Zone Specifications</title><link rel="stylesheet" type="text/css" href="stylesheet.css" /><link rev="made" href="pgsql-docs@lists.postgresql.org" /><meta name="generator" content="DocBook XSL Stylesheets V1.79.1" /><link rel="prev" href="datetime-config-files.html" title="B.4. Date/Time Configuration Files" /><link rel="next" href="datetime-units-history.html" title="B.6. History of Units" /></head><body><div xmlns="http://www.w3.org/TR/xhtml1/transitional" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="5" align="center">B.5. <acronym xmlns="http://www.w3.org/1999/xhtml" class="acronym">POSIX</acronym> Time Zone Specifications</th></tr><tr><td width="10%" align="left"><a accesskey="p" href="datetime-config-files.html" title="B.4. Date/Time Configuration Files">Prev</a> </td><td width="10%" align="left"><a accesskey="u" href="datetime-appendix.html" title="Appendix B. Date/Time Support">Up</a></td><th width="60%" align="center">Appendix B. Date/Time Support</th><td width="10%" align="right"><a accesskey="h" href="index.html" title="PostgreSQL 12.4 Documentation">Home</a></td><td width="10%" align="right"> <a accesskey="n" href="datetime-units-history.html" title="B.6. History of Units">Next</a></td></tr></table><hr></hr></div><div class="sect1" id="DATETIME-POSIX-TIMEZONE-SPECS"><div class="titlepage"><div><div><h2 class="title" style="clear: both">B.5. <acronym class="acronym">POSIX</acronym> Time Zone Specifications</h2></div></div></div><a id="id-1.11.3.8.2" class="indexterm"></a><p>
- <acronym class="acronym">PostgreSQL</acronym> can accept time zone specifications that
- are written according to the <acronym class="acronym">POSIX</acronym> standard's rules
- for the <code class="varname">TZ</code> environment
- variable. <acronym class="acronym">POSIX</acronym> time zone specifications are
- inadequate to deal with the complexity of real-world time zone history,
- but there are sometimes reasons to use them.
- </p><p>
- A POSIX time zone specification has the form
- </p><pre class="synopsis">
- <em class="replaceable"><code>STD</code></em> <em class="replaceable"><code>offset</code></em> [<span class="optional"> <em class="replaceable"><code>DST</code></em> [<span class="optional"> <em class="replaceable"><code>dstoffset</code></em> </span>] [<span class="optional"> , <em class="replaceable"><code>rule</code></em> </span>] </span>]
- </pre><p>
- (For readability, we show spaces between the fields, but spaces should
- not be used in practice.) The fields are:
- </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
- <em class="replaceable"><code>STD</code></em> is the zone abbreviation to be used
- for standard time.
- </p></li><li class="listitem"><p>
- <em class="replaceable"><code>offset</code></em> is the zone's standard-time offset
- from UTC.
- </p></li><li class="listitem"><p>
- <em class="replaceable"><code>DST</code></em> is the zone abbreviation to be used
- for daylight-savings time. If this field and the following ones are
- omitted, the zone uses a fixed UTC offset with no daylight-savings
- rule.
- </p></li><li class="listitem"><p>
- <em class="replaceable"><code>dstoffset</code></em> is the daylight-savings offset
- from UTC. This field is typically omitted, since it defaults to one
- hour less than the standard-time <em class="replaceable"><code>offset</code></em>,
- which is usually the right thing.
- </p></li><li class="listitem"><p>
- <em class="replaceable"><code>rule</code></em> defines the rule for when daylight
- savings is in effect, as described below.
- </p></li></ul></div><p>
- </p><p>
- In this syntax, a zone abbreviation can be a string of letters, such
- as <code class="literal">EST</code>, or an arbitrary string surrounded by angle
- brackets, such as <code class="literal"><UTC-05></code>.
- Note that the zone abbreviations given here are only used for output,
- and even then only in some timestamp output formats. The zone
- abbreviations recognized in timestamp input are determined as explained
- in <a class="xref" href="datetime-config-files.html" title="B.4. Date/Time Configuration Files">Section B.4</a>.
- </p><p>
- The offset fields specify the hours, and optionally minutes and seconds,
- difference from UTC. They have the format
- <em class="replaceable"><code>hh</code></em>[<span class="optional"><code class="literal">:</code><em class="replaceable"><code>mm</code></em>[<span class="optional"><code class="literal">:</code><em class="replaceable"><code>ss</code></em></span>]</span>]
- optionally with a leading sign (<code class="literal">+</code>
- or <code class="literal">-</code>). The positive sign is used for
- zones <span class="emphasis"><em>west</em></span> of Greenwich. (Note that this is the
- opposite of the ISO-8601 sign convention used elsewhere in
- <acronym class="acronym">PostgreSQL</acronym>.) <em class="replaceable"><code>hh</code></em> can have
- one or two digits; <em class="replaceable"><code>mm</code></em>
- and <em class="replaceable"><code>ss</code></em> (if used) must have two.
- </p><p>
- The daylight-savings transition <em class="replaceable"><code>rule</code></em> has the
- format
- </p><pre class="synopsis">
- <em class="replaceable"><code>dstdate</code></em> [<span class="optional"> <code class="literal">/</code> <em class="replaceable"><code>dsttime</code></em> </span>] <code class="literal">,</code> <em class="replaceable"><code>stddate</code></em> [<span class="optional"> <code class="literal">/</code> <em class="replaceable"><code>stdtime</code></em> </span>]
- </pre><p>
- (As before, spaces should not be included in practice.)
- The <em class="replaceable"><code>dstdate</code></em>
- and <em class="replaceable"><code>dsttime</code></em> fields define when daylight-savings
- time starts, while <em class="replaceable"><code>stddate</code></em>
- and <em class="replaceable"><code>stdtime</code></em> define when standard time
- starts. (In some cases, notably in zones south of the equator, the
- former might be later in the year than the latter.) The date fields
- have one of these formats:
- </p><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="replaceable"><code>n</code></em></span></dt><dd><p>
- A plain integer denotes a day of the year, counting from zero to
- 364, or to 365 in leap years.
- </p></dd><dt><span class="term"><code class="literal">J</code><em class="replaceable"><code>n</code></em></span></dt><dd><p>
- In this form, <em class="replaceable"><code>n</code></em> counts from 1 to 365,
- and February 29 is not counted even if it is present. (Thus, a
- transition occurring on February 29 could not be specified this
- way. However, days after February have the same numbers whether
- it's a leap year or not, so that this form is usually more useful
- than the plain-integer form for transitions on fixed dates.)
- </p></dd><dt><span class="term"><code class="literal">M</code><em class="replaceable"><code>m</code></em><code class="literal">.</code><em class="replaceable"><code>n</code></em><code class="literal">.</code><em class="replaceable"><code>d</code></em></span></dt><dd><p>
- This form specifies a transition that always happens during the same
- month and on the same day of the week. <em class="replaceable"><code>m</code></em>
- identifies the month, from 1 to 12. <em class="replaceable"><code>n</code></em>
- specifies the <em class="replaceable"><code>n</code></em>'th occurrence of the
- weekday identified by <em class="replaceable"><code>d</code></em>.
- <em class="replaceable"><code>n</code></em> is a number between 1 and 4, or 5
- meaning the last occurrence of that weekday in the month (which
- could be the fourth or the fifth). <em class="replaceable"><code>d</code></em> is
- a number between 0 and 6, with 0 indicating Sunday.
- For example, <code class="literal">M3.2.0</code> means <span class="quote">“<span class="quote">the second
- Sunday in March</span>”</span>.
- </p></dd></dl></div><p>
- </p><div class="note"><h3 class="title">Note</h3><p>
- The <code class="literal">M</code> format is sufficient to describe many common
- daylight-savings transition laws. But note that none of these variants
- can deal with daylight-savings law changes, so in practice the
- historical data stored for named time zones (in the IANA time zone
- database) is necessary to interpret past time stamps correctly.
- </p></div><p>
- The time fields in a transition rule have the same format as the offset
- fields described previously, except that they cannot contain signs.
- They define the current local time at which the change to the other
- time occurs. If omitted, they default to <code class="literal">02:00:00</code>.
- </p><p>
- If a daylight-savings abbreviation is given but the
- transition <em class="replaceable"><code>rule</code></em> field is omitted,
- <span class="productname">PostgreSQL</span> attempts to determine the
- transition times by consulting the <code class="filename">posixrules</code> file
- in the IANA time zone database. This file has the same format as a
- full time zone entry, but only its transition timing rules are used,
- not its UTC offsets. Typically, this file has the same contents as the
- <code class="literal">US/Eastern</code> file, so that POSIX-style time zone
- specifications follow USA daylight-savings rules. If needed, you can
- adjust this behavior by replacing the <code class="filename">posixrules</code>
- file.
- </p><div class="note"><h3 class="title">Note</h3><p>
- The facility to consult a <code class="filename">posixrules</code> file has
- been deprecated by IANA, and it is likely to go away in the future.
- One bug in this feature, which is unlikely to be fixed before it
- disappears, is that it fails to apply DST rules to dates after 2038.
- </p></div><p>
- If the <code class="filename">posixrules</code> file is not present,
- the fallback behavior is to use the
- rule <code class="literal">M3.2.0,M11.1.0</code>, which corresponds to USA
- practice as of 2020 (that is, spring forward on the second Sunday of
- March, fall back on the first Sunday of November, both transitions
- occurring at 2AM prevailing time).
- </p><p>
- As an example, <code class="literal">CET-1CEST,M3.5.0,M10.5.0/3</code> describes
- current (as of 2020) timekeeping practice in Paris. This specification
- says that standard time has the abbreviation <code class="literal">CET</code> and
- is one hour ahead (east) of UTC; daylight savings time has the
- abbreviation <code class="literal">CEST</code> and is implicitly two hours ahead
- of UTC; daylight savings time begins on the last Sunday in March at 2AM
- CET and ends on the last Sunday in October at 3AM CEST.
- </p><p>
- The four timezone names <code class="literal">EST5EDT</code>,
- <code class="literal">CST6CDT</code>, <code class="literal">MST7MDT</code>,
- and <code class="literal">PST8PDT</code> look like they are POSIX zone
- specifications. However, they actually are treated as named time zones
- because (for historical reasons) there are files by those names in the
- IANA time zone database. The practical implication of this is that
- these zone names will produce valid historical USA daylight-savings
- transitions, even when a plain POSIX specification would not due to
- lack of a suitable <code class="filename">posixrules</code> file.
- </p><p>
- One should be wary that it is easy to misspell a POSIX-style time zone
- specification, since there is no check on the reasonableness of the
- zone abbreviation(s). For example, <code class="literal">SET TIMEZONE TO
- FOOBAR0</code> will work, leaving the system effectively using a
- rather peculiar abbreviation for UTC.
- </p></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="datetime-config-files.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="datetime-appendix.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="datetime-units-history.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">B.4. Date/Time Configuration Files </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> B.6. History of Units</td></tr></table></div></body></html>
|