B.5. Указание ÑаÑовÑÑ Ð¿Ð¾ÑÑов в ÑÑиле POSIX #
Postgres Pro Ð¼Ð¾Ð¶ÐµÑ Ð²Ð¾ÑпÑинимаÑÑ Ñказание ÑаÑового поÑÑа, запиÑанное по пÑавилам ÑÑандаÑÑа POSIX, в ÑооÑвеÑÑÑвии Ñ ÐºÐ¾ÑоÑÑми, в ÑаÑÑноÑÑи, задаÑÑÑÑ Ð¿ÐµÑÐµÐ¼ÐµÐ½Ð½Ð°Ñ Ð¾ÐºÑÑÐ¶ÐµÐ½Ð¸Ñ TZ. Ð£ÐºÐ°Ð·Ð°Ð½Ð¸Ñ ÑаÑовÑÑ
поÑÑов в ÑÑиле POSIX не ÑдовлеÑвоÑÑÑÑ Ð²Ñем ÑÑловиÑм, пÑодикÑованнÑм Ñложной иÑÑоÑией ÑаÑовÑÑ
поÑÑов в ÑеалÑном миÑе, но иногда иÑполÑзование ÑÑиÑ
Ñказаний бÑÐ²Ð°ÐµÑ Ð¾Ð¿ÑавданнÑм.
Указание ÑаÑового поÑÑа в ÑÑиле POSIX вÑглÑÐ´Ð¸Ñ Ñак:
STDÑмеÑение[DST[ÑмеÑение_леÑнего_вÑемени] [ ,пÑавило] ]
(ÐÐ»Ñ Ð½Ð°Ð³Ð»ÑдноÑÑи Ð¼ÐµÐ¶Ð´Ñ Ð¿Ð¾Ð»Ñми Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ñ Ð¿ÑобелÑ, но в ÑеалÑном Ñказании Ð¸Ñ Ð½Ðµ должно бÑÑÑ.) РнÑм ÑодеÑжаÑÑÑ ÑледÑÑÑие полÑ:
STDâ аббÑевиаÑÑÑа, иÑполÑзÑÐµÐ¼Ð°Ñ Ð´Ð»Ñ ÑÑандаÑÑного ÑаÑового поÑÑа.ÑмеÑениеâ ÑÑандаÑÑное ÑмеÑение поÑÑа Ð¾Ñ UTC.DSTâ аббÑевиаÑÑÑа ÑаÑового поÑÑа пÑи пеÑÐµÑ Ð¾Ð´Ðµ на леÑнее вÑемÑ. ÐÑли ÑÑо поле и ÑледÑÑÑие за ним опÑÑенÑ, Ð´Ð»Ñ ÑаÑового поÑÑа бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑÑÑ ÑикÑиÑованное ÑмеÑение Ð¾Ñ UTC без ÑÑÑÑа пеÑÐµÑ Ð¾Ð´Ð° на леÑнее вÑемÑ.ÑмеÑение_леÑнего_вÑемениâ ÑмеÑение ÑаÑового поÑÑа Ð¾Ñ UTC пÑи пеÑÐµÑ Ð¾Ð´Ðµ на леÑнее вÑемÑ. ÐÑо поле обÑÑно опÑÑкаеÑÑÑ, Ñак как по ÑмолÑÐ°Ð½Ð¸Ñ ÑÑо ÑмеÑение Ñавно ÑÑандаÑÑномÑÑмеÑениÑминÑÑ Ð¾Ð´Ð¸Ð½ ÑаÑ, ÑÑо пÑакÑиÑеÑки вÑегда Ð¸Ð¼ÐµÐµÑ Ð¼ÐµÑÑо на пÑакÑике.пÑавилоâ опÑеделÑеÑ, как должен ÑÑиÑÑваÑÑÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´ на леÑнее вÑемÑ, в ÑооÑвеÑÑÑвии Ñ Ð¿ÑедÑÑавленнÑм ниже опиÑанием.
Ð ÑÑой запиÑи аббÑевиаÑÑÑа ÑаÑового поÑÑа Ð¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑÑÑ Ð½Ð°Ð±Ð¾Ñом бÑкв, напÑÐ¸Ð¼ÐµÑ EST, или пÑоизволÑной ÑÑÑокой, заклÑÑÑнной в ÑгловÑе Ñкобки, напÑÐ¸Ð¼ÐµÑ <UTC-05>. ÐамеÑÑÑе, ÑÑо показаннÑе здеÑÑ Ð°Ð±Ð±ÑевиаÑÑÑÑ Ð¸ÑполÑзÑÑÑÑÑ ÑолÑко пÑи вÑводе и ÑолÑко в некоÑоÑÑÑ
вÑÑ
однÑÑ
ÑоÑмаÑаÑ
. РаÑпознаваемÑе во вÑ
однÑÑ
знаÑениÑÑ
даÑÑ/вÑемени аббÑевиаÑÑÑÑ ÑаÑовÑÑ
поÑÑов опиÑÐ°Ð½Ñ Ð² Разделе B.4.
РполÑÑ
ÑмеÑений задаÑÑÑÑ Ñдвиг Ð¾Ñ UTC в ÑаÑаÑ
и, возможно, минÑÑаÑ
и ÑекÑндаÑ
. Ðни имеÑÑ ÑоÑÐ¼Ð°Ñ ÑÑ[:мм[:ÑÑ]] и могÑÑ ÑодеÑжаÑÑ ÑпеÑеди знак (+ или -). ÐоложиÑелÑнÑй знак имеÑÑ ÑаÑовÑе поÑÑа к Ð·Ð°Ð¿Ð°Ð´Ñ Ð¾Ñ ÐÑинвиÑа. (ÐамеÑÑÑе, ÑÑо ÑÑо пÑоÑивоположно ÑоглаÑÐµÐ½Ð¸Ñ ISO-8601, иÑполÑзÑÐµÐ¼Ð¾Ð¼Ñ Ð² дÑÑгиÑ
облаÑÑÑÑ
Postgres Pro.) ÐÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ ÑÑ Ð¼Ð¾Ð¶ÐµÑ ÑодеÑжаÑÑ Ð¾Ð´Ð½Ñ Ð¸Ð»Ð¸ две ÑиÑÑÑ, а мм и ÑÑ (еÑли они задаÑÑÑÑ) Ð´Ð¾Ð»Ð¶Ð½Ñ ÑоÑÑоÑÑÑ Ñовно из двÑÑ
ÑиÑÑ.
Ðоле, задаÑÑее пÑавило пеÑеÑ
ода на леÑнее вÑемÑ, Ð¸Ð¼ÐµÐµÑ ÑледÑÑÑий ÑоÑмаÑ:
даÑа_пеÑÐµÑ Ð¾Ð´Ð°[/вÑемÑ_пеÑÐµÑ Ð¾Ð´Ð°],даÑа_возвÑаÑа[/вÑемÑ_возвÑаÑа]
(Ðак и Ñанее, ÑеалÑное Ñказание не должно ÑодеÑжаÑÑ Ð¿ÑобелÑ.) ÐÐ¾Ð»Ñ Ð´Ð°Ñа_пеÑеÑ
ода и вÑемÑ_пеÑеÑ
ода опÑеделÑÑÑ Ð¼Ð¾Ð¼ÐµÐ½Ñ Ð¿ÐµÑеÑ
ода на леÑнее вÑемÑ, а Ð¿Ð¾Ð»Ñ Ð´Ð°Ñа_возвÑаÑа и вÑемÑ_возвÑаÑа опÑеделÑÑÑ Ð´Ð°ÑÑ Ð²Ð¾Ð·Ð²ÑаÑа к поÑÑÐ½Ð¾Ð¼Ñ Ð²Ñемени. (РнекоÑоÑÑÑ
ÑегионаÑ
, в ÑаÑÑноÑÑи, в Южном полÑÑаÑии, вÑоÑÐ°Ñ Ð´Ð°Ñа в календаÑе Ð¼Ð¾Ð¶ÐµÑ Ð¿ÑедÑеÑÑвоваÑÑ Ð¿ÐµÑвой.) ÐаÑÑ Ð¼Ð¾Ð³ÑÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑÑÑ Ð² одном из ÑледÑÑÑиÑ
ÑоÑмаÑов:
nÐÑоÑÑое Ñелое, обознаÑаÑÑее Ð´ÐµÐ½Ñ Ð³Ð¾Ð´Ð°, Ñ Ð½ÑмеÑаÑией Ð¾Ñ Ð½ÑÐ»Ñ Ð´Ð¾ 364, или 365 в виÑокоÑном годÑ.
JnÐ ÑÑой запиÑи
nобознаÑÐ°ÐµÑ Ð½Ð¾Ð¼ÐµÑ Ð´Ð½Ñ Ð¾Ñ 1 до 365, а 29 ÑевÑÐ°Ð»Ñ Ð¿ÑопÑÑкаеÑÑÑ, даже когда ÑакÑиÑеÑки пÑиÑÑÑÑÑвÑеÑ. (Таким обÑазом, ÑÐ¼ÐµÐ½Ñ ÑаÑового поÑÑа, пÑоиÑÑ Ð¾Ð´ÑÑие 29 ÑевÑалÑ, в ÑÑой запиÑи вÑÑазиÑÑ Ð½ÐµÐ»ÑзÑ. Ðднако поÑле ÑевÑÐ°Ð»Ñ Ð´Ð½Ð¸ имеÑÑ Ð¾Ð´Ð¸Ð½Ð°ÐºÐ¾Ð²Ñе номеÑа и в обÑÑнÑе, и в виÑокоÑнÑе годÑ, Ñак ÑÑо ÑÑа запиÑÑ Ð¾Ð±ÑÑно полезнее Ñем, ÑÑо позволÑÐµÑ Ð²ÑÑазиÑÑ Ð¾Ð´Ð½Ð¸Ð¼ ÑиÑлом ÑикÑиÑованнÑÑ Ð´Ð°ÑÑ Ð¿ÐµÑевода ÑаÑов.)Mm.n.dÐÑа ÑоÑма задаÑÑ Ð´Ð°ÑÑ Ð¿ÐµÑÐµÑ Ð¾Ð´Ð°, коÑоÑÐ°Ñ Ð²Ñегда назнаÑаеÑÑÑ Ð² опÑеделÑннÑй меÑÑÑ Ð¸ Ð´ÐµÐ½Ñ Ð½ÐµÐ´ÐµÐ»Ð¸. ÐдеÑÑ
mобознаÑÐ°ÐµÑ Ð½Ð¾Ð¼ÐµÑ Ð¼ÐµÑÑÑа Ð¾Ñ 1 до 12, аnâ Ð½Ð¾Ð¼ÐµÑ Ð¿Ð¾Ð²ÑоÑÐµÐ½Ð¸Ñ Ð² ÑÑом меÑÑÑе Ð´Ð½Ñ Ð½ÐµÐ´ÐµÐ»Ð¸, заданного полемd. РкаÑеÑÑвеnÐ¼Ð¾Ð¶ÐµÑ Ð·Ð°Ð´Ð°Ð²Ð°ÑÑÑÑ ÑиÑло Ð¾Ñ 1 до 4 либо ÑиÑло 5, вÑбиÑаÑÑее поÑледнÑÑ Ð´Ð°ÑÑ Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ñм днÑм недели в ÑÑом меÑÑÑе (она Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ ÑакÑиÑеÑки ÑеÑвÑÑÑой или пÑÑой). РкаÑеÑÑвеdзадаÑÑÑÑ ÑиÑло Ð¾Ñ 0 до 6, обознаÑаÑÑее Ð´ÐµÐ½Ñ Ð½ÐµÐ´ÐµÐ»Ð¸ (0 â воÑкÑеÑенÑе). ÐапÑимеÑ, запиÑÑM3.2.0ÑаÑÑиÑÑовÑваеÑÑÑ ÐºÐ°Ðº «вÑоÑое воÑкÑеÑенÑе маÑÑа».
ÐÑимеÑание
ÐÐ»Ñ Ð¾Ð¿Ð¸ÑÐ°Ð½Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¸Ñ
ÑÑÑеÑÑвÑÑÑиÑ
пÑавил пеÑеÑ
ода на леÑнее вÑÐµÐ¼Ñ Ð¾Ð±ÑÑно доÑÑаÑоÑно ÑоÑмаÑа M. Ðо замеÑÑÑе, ÑÑо ни одна из ÑÑиÑ
ваÑиаÑий не позволÑÐµÑ Ð¾Ð¿Ð¸ÑаÑÑ Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¿Ñавил пеÑевода ÑаÑов. ÐоÑÑÐ¾Ð¼Ñ Ð½Ð° пÑакÑике Ð´Ð»Ñ Ð¿ÑавилÑной инÑеÑпÑеÑаÑии знаÑений вÑемени, оÑноÑÑÑиÑ
ÑÑ Ðº пÑоÑломÑ, необÑ
Ð¾Ð´Ð¸Ð¼Ñ Ð¸ÑÑоÑиÑеÑкие даннÑе, Ñ
ÑанÑÑиеÑÑ Ð² пÑивÑзке к именованнÑм ÑаÑовÑм поÑÑам (в базе даннÑÑ
IANA Ñ Ð¸Ð½ÑоÑмаÑией о ÑаÑовÑÑ
поÑÑаÑ
).
ÐÐ¾Ð»Ñ Ð²Ñемени в опиÑании пÑавила пеÑеÑ
ода имеÑÑ ÑÐ¾Ñ Ð¶Ðµ ÑоÑмаÑ, ÑÑо и Ð¿Ð¾Ð»Ñ ÑмеÑений, опиÑаннÑе Ñанее, за иÑклÑÑением Ñого, ÑÑо в ниÑ
не Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð·Ð½Ð°ÐºÐ°. Ðни опÑеделÑÑÑ ÑекÑÑее меÑÑное вÑемÑ, в коÑоÑое пÑоизводиÑÑÑ Ð¿ÐµÑевод ÑаÑов. Ðо ÑмолÑÐ°Ð½Ð¸Ñ Ð²Ñеменем пеÑевода ÑаÑов ÑÑиÑаеÑÑÑ 02:00:00.
ÐÑли задаÑÑÑÑ Ð°Ð±Ð±ÑевиаÑÑÑа Ð´Ð»Ñ Ð»ÐµÑнего вÑемени, но пÑавило пеÑеÑ
ода не задано, в каÑеÑÑве пÑавила по ÑмолÑÐ°Ð½Ð¸Ñ Ð¸ÑполÑзÑеÑÑÑ M3.2.0,M11.1.0, ÑÑо ÑооÑвеÑÑÑвÑÐµÑ ÑÑÑеÑÑвÑÑÑÐµÐ¼Ñ Ð² СШРв 2020 г. поÑÑдкÑ. То еÑÑÑ ÑаÑÑ Ð¿ÐµÑеводÑÑÑÑ Ð½Ð° леÑнее вÑÐµÐ¼Ñ Ð²Ð¾ вÑоÑое воÑкÑеÑенÑе маÑÑа, а на зимнее â в пеÑвое воÑкÑеÑенÑе ноÑбÑÑ, в два ÑаÑа по дейÑÑвÑÑÑÐµÐ¼Ñ Ð²Ñемени. ÐамеÑÑÑе, ÑÑо ÑÑо пÑавило даÑÑ Ð¿ÑавилÑнÑе даÑÑ Ð´Ð»Ñ Ð¡Ð¨Ð ÑолÑко Ñ 2007 г.
ÐапÑимеÑ, запиÑÑ CET-1CEST,M3.5.0,M10.5.0/3 оÑÑÐ°Ð¶Ð°ÐµÑ Ð´ÐµÐ¹ÑÑвÑÑÑÑÑ Ð² 2020 г. пÑакÑÐ¸ÐºÑ Ð¿ÐµÑевода ÑаÑов в ÐаÑиже. ÐÑо Ñказание говоÑиÑ, ÑÑо ÑÑандаÑÑное поÑÑное вÑÐµÐ¼Ñ Ð¸Ð¼ÐµÐµÑ Ð°Ð±Ð±ÑевиаÑÑÑÑ CET и оно ÑмеÑено на ÑÐ°Ñ Ð²Ð¿ÐµÑÑд (к воÑÑокÑ) Ð¾Ñ UTC; леÑнее вÑÐµÐ¼Ñ Ð¸Ð¼ÐµÐµÑ Ð°Ð±Ð±ÑевиаÑÑÑÑ CEST и ÑмеÑено впеÑед Ð¾Ñ UTC на два ÑаÑа (ÑÑо опÑеделÑеÑÑÑ Ð½ÐµÑвно). ЧаÑÑ Ð¿ÐµÑеводÑÑÑÑ Ð½Ð° леÑнее вÑÐµÐ¼Ñ Ð² поÑледнее воÑкÑеÑенÑе маÑÑа в 2:00 CET, а на зимнее â в поÑледнее воÑкÑеÑенÑе окÑÑбÑÑ Ð² 3:00 CEST.
ÐÐ°Ð·Ð²Ð°Ð½Ð¸Ñ ÑеÑÑÑÑÑ
ÑаÑовÑÑ
поÑÑов EST5EDT, CST6CDT, MST7MDT и PST8PDT вÑглÑдÑÑ ÐºÐ°Ðº опÑеделÑÑÑие ÑаÑовÑе поÑÑа в ÑÑиле POSIX, но в ÑеалÑноÑÑи по иÑÑоÑиÑеÑким пÑиÑинам они воÑпÑинимаÑÑÑÑ ÐºÐ°Ðº имена ÑаÑовÑÑ
поÑÑов, наÑавне Ñ Ð´ÑÑгими, Ñак как в базе даннÑÑ
IANA еÑÑÑ ÑÐ°Ð¹Ð»Ñ Ñ Ñакими именами. ÐÑакÑиÑеÑкое ÑледÑÑвие ÑÑого ÑоÑÑÐ¾Ð¸Ñ Ð² Ñом, ÑÑо Ð´Ð»Ñ Ð´Ð°Ð½Ð½ÑÑ
имÑн Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¿Ð¾Ð»ÑÑена иÑÑоÑиÑеÑÐºÐ°Ñ Ð¸Ð½ÑоÑмаÑÐ¸Ñ Ð¾ дейÑÑвовавÑиÑ
пÑавилаÑ
пеÑеÑ
ода на леÑнее вÑÐµÐ¼Ñ Ð² СШÐ, коÑоÑÑÑ Ð½Ðµ Ð¼Ð¾Ð¶ÐµÑ Ð´Ð°ÑÑ Ð¾Ð±ÑÑное Ñказание в ÑÑиле POSIX.
ÐмейÑе в видÑ, ÑÑо оÑибиÑÑÑÑ Ð² Ñказании ÑаÑового поÑÑа в ÑÑиле POSIX оÑÐµÐ½Ñ Ð»ÐµÐ³ÐºÐ¾, Ñак как адекваÑноÑÑÑ Ð°Ð±Ð±ÑевиаÑÑÑÑ Ð½Ð¸ÐºÐ°Ðº не пÑовеÑÑеÑÑÑ. ÐапÑимеÑ, команда SET TIMEZONE TO FOOBAR0 вÑполниÑÑÑ Ð±ÐµÐ· оÑибки, и ÑиÑÑема в иÑоге бÑÐ´ÐµÑ Ð¸ÑполÑзоваÑÑ Ð²ÐµÑÑма ÑвоеобÑазнÑÑ Ð°Ð±Ð±ÑевиаÑÑÑÑ Ð´Ð»Ñ UTC.