| 1 |
<?xml version="1.0" encoding="ISO-8859-15"?> |
|---|
| 2 |
<!-- Dernière modification |
|---|
| 3 |
le $Date$ |
|---|
| 4 |
par $Author$ |
|---|
| 5 |
révision $Revision$ --> |
|---|
| 6 |
|
|---|
| 7 |
<appendix id="datetime-appendix"> |
|---|
| 8 |
<title>Support de date/heure</title> |
|---|
| 9 |
|
|---|
| 10 |
<para> |
|---|
| 11 |
<productname>PostgreSQL</productname> utilise un analyseur heuristique interne |
|---|
| 12 |
pour le support des dates/heures saisies. Les dates et heures, saisies |
|---|
| 13 |
sous la forme de chaînes de caractères, sont découpées en champs distincts |
|---|
| 14 |
après détermination du type d'information contenue dans chaque champ. Chaque champ est |
|---|
| 15 |
interpreté ; une valeur peut lui être affectée, il peut être ignoré ou |
|---|
| 16 |
encore être rejeté. Le parseur contient des tables de recherche internes |
|---|
| 17 |
pour tous les champs textuels y compris les mois, les jours de la semaine et |
|---|
| 18 |
les fuseaux horaires. |
|---|
| 19 |
</para> |
|---|
| 20 |
|
|---|
| 21 |
<para> |
|---|
| 22 |
Cette annexe décrit le contenu des tables de |
|---|
| 23 |
correspondance et les méthodes utilisées par le parseur pour décoder |
|---|
| 24 |
les dates et heures. |
|---|
| 25 |
</para> |
|---|
| 26 |
|
|---|
| 27 |
<sect1 id="datetime-input-rules"> |
|---|
| 28 |
<title>Interprétation des Date/Heure saisies</title> |
|---|
| 29 |
|
|---|
| 30 |
<para> |
|---|
| 31 |
Les entrées de type date/heure sont toutes décodées en utilisant le processus |
|---|
| 32 |
suivant. |
|---|
| 33 |
</para> |
|---|
| 34 |
|
|---|
| 35 |
<procedure> |
|---|
| 36 |
<step> |
|---|
| 37 |
<para> |
|---|
| 38 |
Diviser la chaîne saisie en lexèmes et catégoriser les lexèmes en |
|---|
| 39 |
chaînes, heures, fuseaux horaires et nombres. |
|---|
| 40 |
</para> |
|---|
| 41 |
|
|---|
| 42 |
<substeps> |
|---|
| 43 |
<step> |
|---|
| 44 |
<para> |
|---|
| 45 |
Si le lexème numérique contient un double-point (<literal>:</literal>), |
|---|
| 46 |
c'est une chaîne de type heure. On inclut tous les chiffres et |
|---|
| 47 |
double-points qui suivent. |
|---|
| 48 |
</para> |
|---|
| 49 |
</step> |
|---|
| 50 |
|
|---|
| 51 |
<step> |
|---|
| 52 |
<para> |
|---|
| 53 |
Si le lexème numérique contient un tiret (<literal>-</literal>), une |
|---|
| 54 |
barre oblique (<literal>/</literal>) ou au moins deux points |
|---|
| 55 |
(<literal>.</literal>), c'est une chaîne de type date qui contient peut-être |
|---|
| 56 |
un mois sous forme textuelle. Si un lexème de date a déjà été reconnu, il |
|---|
| 57 |
est alors interprété comme un nom de fuseau horaire |
|---|
| 58 |
(par exemple <literal>America/New_York</literal>). |
|---|
| 59 |
</para> |
|---|
| 60 |
</step> |
|---|
| 61 |
|
|---|
| 62 |
<!-- e.g. : par exemple |
|---|
| 63 |
i.e. : id est, c'est-à-dire --> |
|---|
| 64 |
<step> |
|---|
| 65 |
<para> |
|---|
| 66 |
Si le lexème n'est que numérique alors il s'agit soit d'un champ simple |
|---|
| 67 |
soit d'une date concaténée ISO 8601 (<literal>19990113</literal> pour |
|---|
| 68 |
le 13 janvier 1999, par exemple) ou d'une heure concaténée ISO 8601 |
|---|
| 69 |
(<literal>141516</literal> pour 14:15:16, par exemple). |
|---|
| 70 |
</para> |
|---|
| 71 |
</step> |
|---|
| 72 |
|
|---|
| 73 |
<step> |
|---|
| 74 |
<para> |
|---|
| 75 |
Si le lexème débute par le signe plus (<literal>+</literal>) ou le |
|---|
| 76 |
signe moins (<literal>-</literal>), alors il s'agit soit d'un fuseau horaire numérique, |
|---|
| 77 |
soit d'un champ spécial. |
|---|
| 78 |
</para> |
|---|
| 79 |
</step> |
|---|
| 80 |
</substeps> |
|---|
| 81 |
</step> |
|---|
| 82 |
|
|---|
| 83 |
<step> |
|---|
| 84 |
<para> |
|---|
| 85 |
Si le lexème est une chaîne texte, le comparer avec les différentes chaînes |
|---|
| 86 |
possibles : |
|---|
| 87 |
</para> |
|---|
| 88 |
|
|---|
| 89 |
<substeps> |
|---|
| 90 |
<step> |
|---|
| 91 |
<para> |
|---|
| 92 |
Faire une recherche binaire dans la table pour vérifier si le lexème |
|---|
| 93 |
est une abréviation de fuseau horaire. |
|---|
| 94 |
</para> |
|---|
| 95 |
</step> |
|---|
| 96 |
|
|---|
| 97 |
<step> |
|---|
| 98 |
<para> |
|---|
| 99 |
S'il n'est pas trouvé, une recherche binaire est effectuée dans la table |
|---|
| 100 |
pour vérifier si le lexème est une chaîne spéciale |
|---|
| 101 |
(<literal>today</literal>, par exemple), |
|---|
| 102 |
un jour (<literal>Thursday</literal>, par exemple), |
|---|
| 103 |
un mois (<literal>January</literal>, par exemple), |
|---|
| 104 |
ou du bruit (<literal>at</literal>, <literal>on</literal>, par exemple). |
|---|
| 105 |
</para> |
|---|
| 106 |
</step> |
|---|
| 107 |
|
|---|
| 108 |
<!-- Le passage suivant ne figure pas dans la doc PG 8.2.3 |
|---|
| 109 |
<step> |
|---|
| 110 |
<para> |
|---|
| 111 |
Si pas trouvé, faire une recherche binaire similaire dans une table de |
|---|
| 112 |
correspondance pour faire correspondre le marqueur avec un fuseau horaire. |
|---|
| 113 |
</para> |
|---|
| 114 |
</step> |
|---|
| 115 |
--> |
|---|
| 116 |
<step> |
|---|
| 117 |
<para> |
|---|
| 118 |
Si le lexème n'est toujours pas trouvé, une erreur est levée. |
|---|
| 119 |
</para> |
|---|
| 120 |
</step> |
|---|
| 121 |
</substeps> |
|---|
| 122 |
</step> |
|---|
| 123 |
|
|---|
| 124 |
<step> |
|---|
| 125 |
<para> |
|---|
| 126 |
Lorsque le lexème est un nombre ou un champ de nombre : |
|---|
| 127 |
</para> |
|---|
| 128 |
|
|---|
| 129 |
<substeps> |
|---|
| 130 |
<step> |
|---|
| 131 |
<para> |
|---|
| 132 |
S'il y a huit ou six chiffres, |
|---|
| 133 |
et qu'aucun autre champ date n'a été lu, alors il est interprété comme |
|---|
| 134 |
une <quote>date concaténée</quote> (<literal>19990118</literal> ou |
|---|
| 135 |
<literal>990118</literal>, par exemple). |
|---|
| 136 |
L'interprétation est <literal>AAAAMMJJ</literal> ou <literal>AAMMJJ</literal>. |
|---|
| 137 |
</para> |
|---|
| 138 |
</step> |
|---|
| 139 |
|
|---|
| 140 |
<step> |
|---|
| 141 |
<para> |
|---|
| 142 |
Si le lexème est composé de trois chiffres |
|---|
| 143 |
et qu'une année est déjà lue, alors il est interprété comme un jour de l'année. |
|---|
| 144 |
</para> |
|---|
| 145 |
</step> |
|---|
| 146 |
|
|---|
| 147 |
<step> |
|---|
| 148 |
<para> |
|---|
| 149 |
Si quatre ou six chiffres et une année sont déjà lus, alors il est |
|---|
| 150 |
interprété comme une heure (<literal>HHMM</literal> ou <literal>HHMMSS</literal>). |
|---|
| 151 |
</para> |
|---|
| 152 |
</step> |
|---|
| 153 |
|
|---|
| 154 |
<step> |
|---|
| 155 |
<para> |
|---|
| 156 |
Si le lexème est composé de trois chiffres ou plus et qu'aucun champ |
|---|
| 157 |
date n'a été trouvé, il est interprété |
|---|
| 158 |
comme une année (cela impose l'ordre aa-mm-jj des champs dates restants). |
|---|
| 159 |
</para> |
|---|
| 160 |
</step> |
|---|
| 161 |
|
|---|
| 162 |
<step> |
|---|
| 163 |
<para> |
|---|
| 164 |
Dans tous les autres cas, le champ date est supposé suivre l'ordre |
|---|
| 165 |
imposé par le paramêtre |
|---|
| 166 |
<varname>datestyle</varname> : mm-jj-aa, jj-mm-aa, ou aa-mm-jj. |
|---|
| 167 |
Si un champ jour ou mois est en dehors des limites, une erreur est |
|---|
| 168 |
levée. |
|---|
| 169 |
</para> |
|---|
| 170 |
</step> |
|---|
| 171 |
</substeps> |
|---|
| 172 |
</step> |
|---|
| 173 |
|
|---|
| 174 |
<!-- negate : rendre négatif et non annuler --> |
|---|
| 175 |
<step> |
|---|
| 176 |
<para> |
|---|
| 177 |
Si BC est indiqué, le signe de l'année est inversé et un est ajouté pour |
|---|
| 178 |
le stockage interne. (Il n'y a pas d'année zéro dans le calendrier Grégorien, |
|---|
| 179 |
alors numériquement 1 BC devient l'année zéro.) |
|---|
| 180 |
</para> |
|---|
| 181 |
</step> |
|---|
| 182 |
|
|---|
| 183 |
<step> |
|---|
| 184 |
<para> |
|---|
| 185 |
Si BC n'est pas indiqué et que le champ année est composé de deux chiffres, alors |
|---|
| 186 |
l'année est ajustée à quatre chiffres. Si le champ vaut moins que 70, |
|---|
| 187 |
alors on ajoute 2000, sinon 1900. |
|---|
| 188 |
|
|---|
| 189 |
<tip> |
|---|
| 190 |
<para> |
|---|
| 191 |
Les années du calendrier Grégorien AD 1-99 peuvent être saisie avec 4 |
|---|
| 192 |
chiffres, deux zéros en tête (<literal>0099</literal> pour |
|---|
| 193 |
AD 99, par exemple). |
|---|
| 194 |
</para> |
|---|
| 195 |
</tip> |
|---|
| 196 |
</para> |
|---|
| 197 |
</step> |
|---|
| 198 |
</procedure> |
|---|
| 199 |
</sect1> |
|---|
| 200 |
|
|---|
| 201 |
|
|---|
| 202 |
<sect1 id="datetime-keywords"> |
|---|
| 203 |
<title>Mots clés Date/Heure</title> |
|---|
| 204 |
|
|---|
| 205 |
<para> |
|---|
| 206 |
<xref linkend="datetime-month-table"/> présente les lexèmes |
|---|
| 207 |
reconnus commme des noms de mois. |
|---|
| 208 |
</para> |
|---|
| 209 |
|
|---|
| 210 |
<table id="datetime-month-table"> |
|---|
| 211 |
<title>Noms de mois</title> |
|---|
| 212 |
<tgroup cols="2"> |
|---|
| 213 |
<thead> |
|---|
| 214 |
<row> |
|---|
| 215 |
<entry>Mois</entry> |
|---|
| 216 |
<entry>Abréviations</entry> |
|---|
| 217 |
</row> |
|---|
| 218 |
</thead> |
|---|
| 219 |
<tbody> |
|---|
| 220 |
<row> |
|---|
| 221 |
<entry>January (Janvier)</entry> |
|---|
| 222 |
<entry>Jan</entry> |
|---|
| 223 |
</row> |
|---|
| 224 |
<row> |
|---|
| 225 |
<entry>February (Février)</entry> |
|---|
| 226 |
<entry>Feb</entry> |
|---|
| 227 |
</row> |
|---|
| 228 |
<row> |
|---|
| 229 |
<entry>March (Mars)</entry> |
|---|
| 230 |
<entry>Mar</entry> |
|---|
| 231 |
</row> |
|---|
| 232 |
<row> |
|---|
| 233 |
<entry>April (Avril)</entry> |
|---|
| 234 |
<entry>Apr</entry> |
|---|
| 235 |
</row> |
|---|
| 236 |
<row> |
|---|
| 237 |
<entry>May (Mai)</entry> |
|---|
| 238 |
<entry></entry> |
|---|
| 239 |
</row> |
|---|
| 240 |
<row> |
|---|
| 241 |
<entry>June (Juin)</entry> |
|---|
| 242 |
<entry>Jun</entry> |
|---|
| 243 |
</row> |
|---|
| 244 |
<row> |
|---|
| 245 |
<entry>July (Juillet)</entry> |
|---|
| 246 |
<entry>Jul</entry> |
|---|
| 247 |
</row> |
|---|
| 248 |
<row> |
|---|
| 249 |
<entry>August (Août)</entry> |
|---|
| 250 |
<entry>Aug</entry> |
|---|
| 251 |
</row> |
|---|
| 252 |
<row> |
|---|
| 253 |
<entry>September (Septembre)</entry> |
|---|
| 254 |
<entry>Sep, Sept</entry> |
|---|
| 255 |
</row> |
|---|
| 256 |
<row> |
|---|
| 257 |
<entry>October (Octobre)</entry> |
|---|
| 258 |
<entry>Oct</entry> |
|---|
| 259 |
</row> |
|---|
| 260 |
<row> |
|---|
| 261 |
<entry>November (Novembre)</entry> |
|---|
| 262 |
<entry>Nov</entry> |
|---|
| 263 |
</row> |
|---|
| 264 |
<row> |
|---|
| 265 |
<entry>December (Décembre)</entry> |
|---|
| 266 |
<entry>Dec</entry> |
|---|
| 267 |
</row> |
|---|
| 268 |
</tbody> |
|---|
| 269 |
</tgroup> |
|---|
| 270 |
</table> |
|---|
| 271 |
|
|---|
| 272 |
<para> |
|---|
| 273 |
<xref linkend="datetime-dow-table"/> présente les lexèmes |
|---|
| 274 |
reconnus comme des noms de jours de la semaine. |
|---|
| 275 |
</para> |
|---|
| 276 |
|
|---|
| 277 |
<table id="datetime-dow-table"> |
|---|
| 278 |
<title>Noms des jours de la semaine</title> |
|---|
| 279 |
<tgroup cols="2"> |
|---|
| 280 |
<thead> |
|---|
| 281 |
<row> |
|---|
| 282 |
<entry>Jour</entry> |
|---|
| 283 |
<entry>Abréviation</entry> |
|---|
| 284 |
</row> |
|---|
| 285 |
</thead> |
|---|
| 286 |
<tbody> |
|---|
| 287 |
<row> |
|---|
| 288 |
<entry>Sunday (Dimanche)</entry> |
|---|
| 289 |
<entry>Sun</entry> |
|---|
| 290 |
</row> |
|---|
| 291 |
<row> |
|---|
| 292 |
<entry>Monday (Lundi)</entry> |
|---|
| 293 |
<entry>Mon</entry> |
|---|
| 294 |
</row> |
|---|
| 295 |
<row> |
|---|
| 296 |
<entry>Tuesday (Mardi)</entry> |
|---|
| 297 |
<entry>Tue, Tues</entry> |
|---|
| 298 |
</row> |
|---|
| 299 |
<row> |
|---|
| 300 |
<entry>Wednesday (Mercredi)</entry> |
|---|
| 301 |
<entry>Wed, Weds</entry> |
|---|
| 302 |
</row> |
|---|
| 303 |
<row> |
|---|
| 304 |
<entry>Thursday (Jeudi)</entry> |
|---|
| 305 |
<entry>Thu, Thur, Thurs</entry> |
|---|
| 306 |
</row> |
|---|
| 307 |
<row> |
|---|
| 308 |
<entry>Friday (Vendredi)</entry> |
|---|
| 309 |
<entry>Fri</entry> |
|---|
| 310 |
</row> |
|---|
| 311 |
<row> |
|---|
| 312 |
<entry>Saturday (Samedi)</entry> |
|---|
| 313 |
<entry>Sat</entry> |
|---|
| 314 |
</row> |
|---|
| 315 |
</tbody> |
|---|
| 316 |
</tgroup> |
|---|
| 317 |
</table> |
|---|
| 318 |
|
|---|
| 319 |
<para> |
|---|
| 320 |
<xref linkend="datetime-mod-table"/> présente les lexèmes utilisés par |
|---|
| 321 |
divers modificateurs. |
|---|
| 322 |
</para> |
|---|
| 323 |
|
|---|
| 324 |
<table id="datetime-mod-table"> |
|---|
| 325 |
<title>Modificateurs de Champs Date/Heure</title> |
|---|
| 326 |
<tgroup cols="2"> |
|---|
| 327 |
<thead> |
|---|
| 328 |
<row> |
|---|
| 329 |
<entry>Identifiant</entry> |
|---|
| 330 |
<entry>Description</entry> |
|---|
| 331 |
</row> |
|---|
| 332 |
</thead> |
|---|
| 333 |
<tbody> |
|---|
| 334 |
<row> |
|---|
| 335 |
<entry><literal>ABSTIME</literal></entry> |
|---|
| 336 |
<entry>Ignoré</entry> |
|---|
| 337 |
</row> |
|---|
| 338 |
<row> |
|---|
| 339 |
<entry><literal>AM</literal></entry> |
|---|
| 340 |
<entry>L'heure précède 12:00</entry> |
|---|
| 341 |
</row> |
|---|
| 342 |
<row> |
|---|
| 343 |
<entry><literal>AT</literal></entry> |
|---|
| 344 |
<entry>Ignoré</entry> |
|---|
| 345 |
</row> |
|---|
| 346 |
<row> |
|---|
| 347 |
<entry><literal>JULIAN</literal>, <literal>JD</literal>, <literal>J</literal></entry> |
|---|
| 348 |
<entry>Le champ suivant est un jour du calendrier Julien</entry> |
|---|
| 349 |
</row> |
|---|
| 350 |
<row> |
|---|
| 351 |
<entry><literal>ON</literal></entry> |
|---|
| 352 |
<entry>Ignoré</entry> |
|---|
| 353 |
</row> |
|---|
| 354 |
<row> |
|---|
| 355 |
<entry><literal>PM</literal></entry> |
|---|
| 356 |
<entry>L'heure suit 12:00</entry> |
|---|
| 357 |
</row> |
|---|
| 358 |
<row> |
|---|
| 359 |
<entry><literal>T</literal></entry> |
|---|
| 360 |
<entry>Le champ suivant est une heure</entry> |
|---|
| 361 |
</row> |
|---|
| 362 |
</tbody> |
|---|
| 363 |
</tgroup> |
|---|
| 364 |
</table> |
|---|
| 365 |
|
|---|
| 366 |
<para> |
|---|
| 367 |
Le mot clé <literal>ABSTIME</literal> est ignoré pour des raisons |
|---|
| 368 |
historiques : dans les très vieilles versions de |
|---|
| 369 |
<productname>PostgreSQL</productname>, les valeurs invalides de type |
|---|
| 370 |
<type>abstime</type> étaient émises en tant que <literal>Invalid Abstime</literal>. |
|---|
| 371 |
Ce n'est plus le cas aujourd'hui. Il est donc fort probable que ce mot clé |
|---|
| 372 |
soit abandonné dans une version future. |
|---|
| 373 |
</para> |
|---|
| 374 |
|
|---|
| 375 |
</sect1> |
|---|
| 376 |
|
|---|
| 377 |
<sect1 id="datetime-config-files"> |
|---|
| 378 |
<title>Fichiers de configuration date/heure</title> |
|---|
| 379 |
|
|---|
| 380 |
<indexterm> |
|---|
| 381 |
<primary>fuseau horaire</primary> |
|---|
| 382 |
<secondary>saisie d'abréviations</secondary> |
|---|
| 383 |
</indexterm> |
|---|
| 384 |
|
|---|
| 385 |
<para> |
|---|
| 386 |
Comme il n'existe pas de réel standard des abréviations de fuseaux |
|---|
| 387 |
horaire, <productname>PostgreSQL</productname> permet de personnaliser |
|---|
| 388 |
l'ensemble des abréviations acceptées par le serveur. Le paramètre |
|---|
| 389 |
d'exécution <xref linkend="guc-timezone-abbreviations"/> détermine |
|---|
| 390 |
l'ensemble des abréviations actives. Bien que tout utilisateur de la base |
|---|
| 391 |
puisse modifier ce paramètre, les valeurs possibles sont |
|---|
| 392 |
sous le contrôle de l'administrateur de bases de données — ce sont en fait |
|---|
| 393 |
les noms des fichiers de configuration stockés dans |
|---|
| 394 |
<filename>.../share/timezonesets/</filename> du répertoire d'installation. |
|---|
| 395 |
En ajoutant ou en modifiant les fichiers de ce répertoire, l'administrateur |
|---|
| 396 |
peut définir les règles d'abréviation des fuseaux horaires. |
|---|
| 397 |
</para> |
|---|
| 398 |
|
|---|
| 399 |
<para> |
|---|
| 400 |
<literal>timezone_abbreviations</literal> peut prendre tout nom |
|---|
| 401 |
de fichier situé dans <filename>.../share/timezonesets/</filename>, sous |
|---|
| 402 |
réserve que ce nom soit purement alphabétique. (L'interdiction de |
|---|
| 403 |
caractères non alphabétique dans <literal>timezone_abbreviations</literal> |
|---|
| 404 |
empêche la lecture de fichiers en dehors du répertoire prévu et |
|---|
| 405 |
celle de fichiers de sauvegarde ou autre.) |
|---|
| 406 |
</para> |
|---|
| 407 |
|
|---|
| 408 |
<para> |
|---|
| 409 |
Un fichier d'abréviation de zones horaires peut contenir des lignes blanches |
|---|
| 410 |
et des commentaires (commençant avec un <literal>#</literal>). Les |
|---|
| 411 |
autres lignes doivent suivre l'un des formats suivants : |
|---|
| 412 |
|
|---|
| 413 |
<synopsis> |
|---|
| 414 |
<replaceable>nom_fuseau_horaire</replaceable> <replaceable>décalage</replaceable> |
|---|
| 415 |
<replaceable>nom_fuseau_horaire</replaceable> <replaceable>décalage</replaceable> D |
|---|
| 416 |
@INCLUDE <replaceable>nom_fichier</replaceable> |
|---|
| 417 |
@OVERRIDE |
|---|
| 418 |
</synopsis> |
|---|
| 419 |
</para> |
|---|
| 420 |
|
|---|
| 421 |
<para> |
|---|
| 422 |
Un <replaceable>nom_fuseau_horaire</replaceable> n'est que |
|---|
| 423 |
l'abréviation définie. Le <replaceable>décalage</replaceable> est le |
|---|
| 424 |
décalage en secondes à partir d'UTC, une valeur positive signifiant à |
|---|
| 425 |
l'est de Greenwich, une valeur négative à l'ouest. |
|---|
| 426 |
Ainsi, -18000 représente cinq heures à l'ouest |
|---|
| 427 |
de Greenwich, soit l'heure standard de la côte ouest nord américaine. |
|---|
| 428 |
<literal>D</literal> indique que le nom du fuseau représente une heure |
|---|
| 429 |
soumise à des règles de changement d'heure plutôt que l'heure standard. Comme tous les |
|---|
| 430 |
décalages de fuseau horaire ont des limites de 15 minutes, le nombre |
|---|
| 431 |
de secondes doit être un multiple de 900. |
|---|
| 432 |
</para> |
|---|
| 433 |
|
|---|
| 434 |
<para> |
|---|
| 435 |
La syntaxe <literal>@INCLUDE</literal> autorise l'inclusion d'autres fichiers |
|---|
| 436 |
du répertoire <filename>.../share/timezonesets/</filename>. Les inclusions |
|---|
| 437 |
peuvent être imbriquées jusqu'à une certaine profondeur. |
|---|
| 438 |
</para> |
|---|
| 439 |
|
|---|
| 440 |
<para> |
|---|
| 441 |
La syntaxe <literal>@OVERRIDE</literal> indique que les entrées suivantes |
|---|
| 442 |
du fichier peuvent surcharger les entrées précédentes (c'est-à-dire des |
|---|
| 443 |
entrées obtenues à partir de fichiers inclus). Sans cela, les définitions en |
|---|
| 444 |
conflit au sein d'une même abréviation lèvent une erreur. |
|---|
| 445 |
</para> |
|---|
| 446 |
|
|---|
| 447 |
<para> |
|---|
| 448 |
Dans une installation non modifiée, le fichier <filename>Default</filename> |
|---|
| 449 |
contient toutes les abréviations de fuseaux horaire, sans conflit, pour la |
|---|
| 450 |
quasi-totalité du monde. Les fichiers supplémentaires <filename>Australia</filename> |
|---|
| 451 |
et <filename>India</filename> sont fournis pour ces régions : ces |
|---|
| 452 |
fichiers incluent le fichier <literal>Default</literal> puis |
|---|
| 453 |
ajoutent ou modifient les fuseaux horaires si nécessaire. |
|---|
| 454 |
</para> |
|---|
| 455 |
|
|---|
| 456 |
<para> |
|---|
| 457 |
Pour des raisons de référence, une installation standard contient aussi |
|---|
| 458 |
des fichiers <filename>Africa.txt</filename>, <filename>America.txt</filename>, |
|---|
| 459 |
etc. qui contiennent des informations sur les abréviations connues et |
|---|
| 460 |
utilisées en accord avec la base de données de fuseaux horaires |
|---|
| 461 |
<literal>zic</literal>. Les définitions des noms de zone trouvées dans ces |
|---|
| 462 |
fichiers peuvent être copiées et collées dans un fichier de configuration |
|---|
| 463 |
personnalisé si nécessaire. Il ne peut pas être fait directement référence |
|---|
| 464 |
à ces fichiers dans le paramètre |
|---|
| 465 |
<literal>timezone_abbreviations</literal> à cause du point dans leur nom. |
|---|
| 466 |
</para> |
|---|
| 467 |
|
|---|
| 468 |
<note> |
|---|
| 469 |
<para> |
|---|
| 470 |
Si une erreur survient lors de la lecture des jeux de données de |
|---|
| 471 |
fuseaux horaires, aucune nouvelle valeur n'est acceptée mais les anciennes |
|---|
| 472 |
sont conservées. Si l'erreur survient au démarrage de la base, celui-ci échoue. |
|---|
| 473 |
</para> |
|---|
| 474 |
</note> |
|---|
| 475 |
|
|---|
| 476 |
<caution> |
|---|
| 477 |
<para> |
|---|
| 478 |
Les abréviations de fuseau horaire définies dans le fichier de configuration |
|---|
| 479 |
surchargent les informations sans fuseau définies nativement dans |
|---|
| 480 |
<productname>PostgreSQL</productname>. |
|---|
| 481 |
Par exemple, le fichier de configuration <filename>Australia</filename> |
|---|
| 482 |
définit <literal>SAT</literal> (<foreignphrase>South Australian Standard |
|---|
| 483 |
Time</foreignphrase>, soit l'heure standard pour l'Australie du sud). Si |
|---|
| 484 |
ce fichier est actif, <literal>SAT</literal> n'est plus reconnu comme |
|---|
| 485 |
abréviation de samedi (<foreignphrase>Saturday</foreignphrase>). |
|---|
| 486 |
</para> |
|---|
| 487 |
</caution> |
|---|
| 488 |
|
|---|
| 489 |
<caution> |
|---|
| 490 |
<para> |
|---|
| 491 |
Si les fichiers de <filename>.../share/timezonesets/</filename> sont |
|---|
| 492 |
modifiés, il revient à l'utilisateur de procéder à leur sauvegarde — |
|---|
| 493 |
une sauvegarde normale de base n'inclut pas ce répertoire. |
|---|
| 494 |
</para> |
|---|
| 495 |
</caution> |
|---|
| 496 |
|
|---|
| 497 |
</sect1> |
|---|
| 498 |
|
|---|
| 499 |
<sect1 id="datetime-units-history"> |
|---|
| 500 |
<title>Histoire des unités</title> |
|---|
| 501 |
|
|---|
| 502 |
<para> |
|---|
| 503 |
Le calendrier Julien a été introduit par Julius Caesar en -45. Il était |
|---|
| 504 |
couramment utilisé dans le monde occidental jusqu'en l'an 1582, date à |
|---|
| 505 |
laquelle des pays ont commencé à se convertir au |
|---|
| 506 |
calendrier Grégorien. Dans le calendrier Julien, l'année tropicale est |
|---|
| 507 |
arrondie à 365 jours 1/4, soit 365,25 jours. Cela conduit à une erreur |
|---|
| 508 |
de l'ordre d'un jour tous les 128 ans. |
|---|
| 509 |
</para> |
|---|
| 510 |
|
|---|
| 511 |
<para> |
|---|
| 512 |
L'erreur grandissante du calendrier poussa le Pape |
|---|
| 513 |
Gregoire XIII a réformé le calendrier en accord avec les |
|---|
| 514 |
instructions du Concile de Trent. |
|---|
| 515 |
Dans le calendrier Grégorien, l'année tropicale est arrondie à |
|---|
| 516 |
365 + 97/400 jours, soit 365,2425 jours. Il faut donc à peu prés 3300 |
|---|
| 517 |
ans pour que l'année tropicale subissent un décalage d'un an dans le |
|---|
| 518 |
calendrier Grégorien. |
|---|
| 519 |
</para> |
|---|
| 520 |
|
|---|
| 521 |
<para> |
|---|
| 522 |
L'arrondi 365+97/400 est obtenu à l'aide de 97 années bissextiles |
|---|
| 523 |
tous les 400 ans. Les règles suivantes sont utilisées : |
|---|
| 524 |
|
|---|
| 525 |
<simplelist> |
|---|
| 526 |
<member> |
|---|
| 527 |
toute année divisible par 4 est bissextile ; |
|---|
| 528 |
</member> |
|---|
| 529 |
<member> |
|---|
| 530 |
cepandant, toute année divisible par 100 n'est pas bissextile ; |
|---|
| 531 |
</member> |
|---|
| 532 |
<member> |
|---|
| 533 |
cependant, toute années divisible par 400 est bissextile. |
|---|
| 534 |
</member> |
|---|
| 535 |
</simplelist> |
|---|
| 536 |
|
|---|
| 537 |
1700, 1800, 1900, 2100 et 2200 ne sont donc pas des années bissextiles. |
|---|
| 538 |
1600, 2000 et 2400 si. |
|---|
| 539 |
|
|---|
| 540 |
Par opposition, dans l'ancien calendrier Julien, toutes les années |
|---|
| 541 |
divisibles par 4 sont bissextiles. |
|---|
| 542 |
</para> |
|---|
| 543 |
|
|---|
| 544 |
<para> |
|---|
| 545 |
En février 1582, le pape décrèta que 10 jours devaient étre |
|---|
| 546 |
supprimés du mois d'octobre 1582, le 15 octobre devant ainsi arriver après |
|---|
| 547 |
le 4 octobre. |
|---|
| 548 |
Cela a été appliqué en Italie, Pologne, Portugal et Espagne. Les autres pays |
|---|
| 549 |
catholiques ont suivi peu après, mais les pays protestants ont été plus |
|---|
| 550 |
rétifs et les contrées orthodoxes grèques n'ont pas effctué le changement |
|---|
| 551 |
avant le début du 20ème siècle. |
|---|
| 552 |
|
|---|
| 553 |
La réforme a été appliquée par la Grande Bretagne et ses colonies (y compris |
|---|
| 554 |
les actuels Etats-Unis) en 1752. |
|---|
| 555 |
Donc le 2 septembre 1752 a été suivi du 14 septembre 1752. |
|---|
| 556 |
|
|---|
| 557 |
C'est pour cela que la commande <command>cal</command> produit |
|---|
| 558 |
la sortie suivante : |
|---|
| 559 |
|
|---|
| 560 |
<screen>$ <userinput>cal 9 1752</userinput> |
|---|
| 561 |
septembre 1752 |
|---|
| 562 |
di lu ma me je ve sa |
|---|
| 563 |
1 2 14 15 16 |
|---|
| 564 |
17 18 19 20 21 22 23 |
|---|
| 565 |
24 25 26 27 28 29 30</screen> |
|---|
| 566 |
</para> |
|---|
| 567 |
|
|---|
| 568 |
<para> |
|---|
| 569 |
Le standard SQL stipule que <quote>dans la définition d'un |
|---|
| 570 |
<quote>libellé date/heure</quote> (<foreignphrase>datetime |
|---|
| 571 |
literal</foreignphrase>), les <quote>valeurs date/heure</quote> |
|---|
| 572 |
sont contraintes par les règles naturelles des dates et heures |
|---|
| 573 |
imposées par le calendrier Grégorien</quote>. Les dates comprises entre |
|---|
| 574 |
le 5 octobre 1582 et le 14 octobre 1582, bien qu'éliminées dans plusieurs |
|---|
| 575 |
pays par ordre du Pape, sont conformes aux <quote>règles |
|---|
| 576 |
naturelles</quote> et sont donc des dates valables. |
|---|
| 577 |
<productname>PostgreSQL</productname> suit le standard SQL en comptant |
|---|
| 578 |
les dates exclusivement dans le calendrier grégorien, même pour les |
|---|
| 579 |
années où ce calendrier n'existait pas encore. |
|---|
| 580 |
</para> |
|---|
| 581 |
|
|---|
| 582 |
<para> |
|---|
| 583 |
Divers calendriers ont été developés dans différentes parties du monde, |
|---|
| 584 |
la plupart précède le système Grégorien. |
|---|
| 585 |
|
|---|
| 586 |
Par exemple, |
|---|
| 587 |
les débuts du calendrier chinois peuvent être évalués aux alentours du 14ème |
|---|
| 588 |
siécle avant J.-C. La légende veut que l'empereur Huangdi inventa le |
|---|
| 589 |
calendrier en 2637 avant J-C. |
|---|
| 590 |
|
|---|
| 591 |
La République de Chine utilise le calendrier Grégorien pour les besoins |
|---|
| 592 |
civils. Le calendrier chinois est utilisé pour déterminer les festivals. |
|---|
| 593 |
</para> |
|---|
| 594 |
|
|---|
| 595 |
<para> |
|---|
| 596 |
La <quote>date Julien</quote> n'a pas de relation avec le <quote>calendrier |
|---|
| 597 |
Julien</quote>. Le système de date Julien a été inventé par le précepteur |
|---|
| 598 |
français Joseph Justus Scaliger (1540-1609) et tient probablement son nom |
|---|
| 599 |
du père de Scaliger, le précepteur italien Julius Caesar Scaliger |
|---|
| 600 |
(1484-1558). Dans le système de date Julien, chaque jour est un nombre |
|---|
| 601 |
séquentiel, commençant à partir de JD 0, appelé quelque fois |
|---|
| 602 |
<emphasis>la</emphasis> date Julien. JD 0 correspond au 1er janvier |
|---|
| 603 |
4713 avant JC dans le calendrier Julien, ou au 24 novembre 4714 avant JC |
|---|
| 604 |
dans le calendrier grégorien. Le comptage de la date Julien est le plus |
|---|
| 605 |
souvent utilisé par les astronomes pour donner un nom à leurs observations, |
|---|
| 606 |
et du coup une date part de midi UTC jusqu'au prochain midi UTC, plutôt que |
|---|
| 607 |
de minuit à minuit : JD 0 désigne les 24 heures de midi UTC le 1er |
|---|
| 608 |
janvier 4713 avant JC jusqu'au midi UTC du 2 janvier 4713 avant JC. |
|---|
| 609 |
</para> |
|---|
| 610 |
|
|---|
| 611 |
<para> |
|---|
| 612 |
Bien que <productname>PostgreSQL</productname> accepte la saisie et |
|---|
| 613 |
l'affichage des dates en notation de date Julien (et les utilise aussi pour |
|---|
| 614 |
quelques calculs internes de date et heure), il n'utilise pas le coup |
|---|
| 615 |
des dates de midi à midi. <productname>PostgreSQL</productname> traite une |
|---|
| 616 |
date Julien comme allant de minuit à minuit. |
|---|
| 617 |
</para> |
|---|
| 618 |
</sect1> |
|---|
| 619 |
</appendix> |
|---|