OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / I686LINUX / util / I686LINUX / doc / postgresql / html / datatype-datetime.html
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2 <HTML
3 ><HEAD
4 ><TITLE
5 >Date/Time Types</TITLE
6 ><META
7 NAME="GENERATOR"
8 CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
9 REV="MADE"
10 HREF="mailto:pgsql-docs@postgresql.org"><LINK
11 REL="HOME"
12 TITLE="PostgreSQL 7.4.1 Documentation"
13 HREF="index.html"><LINK
14 REL="UP"
15 TITLE="Data Types"
16 HREF="datatype.html"><LINK
17 REL="PREVIOUS"
18 TITLE="Binary Data Types"
19 HREF="datatype-binary.html"><LINK
20 REL="NEXT"
21 TITLE="Boolean Type"
22 HREF="datatype-boolean.html"><LINK
23 REL="STYLESHEET"
24 TYPE="text/css"
25 HREF="stylesheet.css"><META
26 NAME="creation"
27 CONTENT="2003-12-22T03:48:47"></HEAD
28 ><BODY
29 CLASS="SECT1"
30 ><DIV
31 CLASS="NAVHEADER"
32 ><TABLE
33 SUMMARY="Header navigation table"
34 WIDTH="100%"
35 BORDER="0"
36 CELLPADDING="0"
37 CELLSPACING="0"
38 ><TR
39 ><TH
40 COLSPAN="5"
41 ALIGN="center"
42 VALIGN="bottom"
43 >PostgreSQL 7.4.1 Documentation</TH
44 ></TR
45 ><TR
46 ><TD
47 WIDTH="10%"
48 ALIGN="left"
49 VALIGN="top"
50 ><A
51 HREF="datatype-binary.html"
52 ACCESSKEY="P"
53 >Prev</A
54 ></TD
55 ><TD
56 WIDTH="10%"
57 ALIGN="left"
58 VALIGN="top"
59 ><A
60 HREF="datatype.html"
61 >Fast Backward</A
62 ></TD
63 ><TD
64 WIDTH="60%"
65 ALIGN="center"
66 VALIGN="bottom"
67 >Chapter 8. Data Types</TD
68 ><TD
69 WIDTH="10%"
70 ALIGN="right"
71 VALIGN="top"
72 ><A
73 HREF="datatype.html"
74 >Fast Forward</A
75 ></TD
76 ><TD
77 WIDTH="10%"
78 ALIGN="right"
79 VALIGN="top"
80 ><A
81 HREF="datatype-boolean.html"
82 ACCESSKEY="N"
83 >Next</A
84 ></TD
85 ></TR
86 ></TABLE
87 ><HR
88 ALIGN="LEFT"
89 WIDTH="100%"></DIV
90 ><DIV
91 CLASS="SECT1"
92 ><H1
93 CLASS="SECT1"
94 ><A
95 NAME="DATATYPE-DATETIME"
96 >8.5. Date/Time Types</A
97 ></H1
98 ><A
99 NAME="AEN3970"
100 ></A
101 ><A
102 NAME="AEN3972"
103 ></A
104 ><A
105 NAME="AEN3974"
106 ></A
107 ><A
108 NAME="AEN3976"
109 ></A
110 ><A
111 NAME="AEN3978"
112 ></A
113 ><A
114 NAME="AEN3980"
115 ></A
116 ><A
117 NAME="AEN3982"
118 ></A
119 ><A
120 NAME="AEN3984"
121 ></A
122 ><A
123 NAME="AEN3986"
124 ></A
125 ><P
126 >    <SPAN
127 CLASS="PRODUCTNAME"
128 >PostgreSQL</SPAN
129 > supports the full set of
130     <ACRONYM
131 CLASS="ACRONYM"
132 >SQL</ACRONYM
133 > date and time types, shown in <A
134 HREF="datatype-datetime.html#DATATYPE-DATETIME-TABLE"
135 >Table 8-9</A
136 >.
137    </P
138 ><DIV
139 CLASS="TABLE"
140 ><A
141 NAME="DATATYPE-DATETIME-TABLE"
142 ></A
143 ><P
144 ><B
145 >Table 8-9. Date/Time Types</B
146 ></P
147 ><TABLE
148 BORDER="1"
149 CLASS="CALSTABLE"
150 ><COL><COL><COL><COL><COL><COL><THEAD
151 ><TR
152 ><TH
153 >Name</TH
154 ><TH
155 >Storage Size</TH
156 ><TH
157 >Description</TH
158 ><TH
159 >Low Value</TH
160 ><TH
161 >High Value</TH
162 ><TH
163 >Resolution</TH
164 ></TR
165 ></THEAD
166 ><TBODY
167 ><TR
168 ><TD
169 ><TT
170 CLASS="TYPE"
171 >timestamp [ (<VAR
172 CLASS="REPLACEABLE"
173 >p</VAR
174 >) ] [ without time zone ]</TT
175 ></TD
176 ><TD
177 >8 bytes</TD
178 ><TD
179 >both date and time</TD
180 ><TD
181 >4713 BC</TD
182 ><TD
183 >5874897 AD</TD
184 ><TD
185 >1 microsecond / 14 digits</TD
186 ></TR
187 ><TR
188 ><TD
189 ><TT
190 CLASS="TYPE"
191 >timestamp [ (<VAR
192 CLASS="REPLACEABLE"
193 >p</VAR
194 >) ] with time zone</TT
195 ></TD
196 ><TD
197 >8 bytes</TD
198 ><TD
199 >both date and time, with time zone</TD
200 ><TD
201 >4713 BC</TD
202 ><TD
203 >5874897 AD</TD
204 ><TD
205 >1 microsecond / 14 digits</TD
206 ></TR
207 ><TR
208 ><TD
209 ><TT
210 CLASS="TYPE"
211 >interval [ (<VAR
212 CLASS="REPLACEABLE"
213 >p</VAR
214 >) ]</TT
215 ></TD
216 ><TD
217 >12 bytes</TD
218 ><TD
219 >time intervals</TD
220 ><TD
221 >-178000000 years</TD
222 ><TD
223 >178000000 years</TD
224 ><TD
225 >1 microsecond</TD
226 ></TR
227 ><TR
228 ><TD
229 ><TT
230 CLASS="TYPE"
231 >date</TT
232 ></TD
233 ><TD
234 >4 bytes</TD
235 ><TD
236 >dates only</TD
237 ><TD
238 >4713 BC</TD
239 ><TD
240 >32767 AD</TD
241 ><TD
242 >1 day</TD
243 ></TR
244 ><TR
245 ><TD
246 ><TT
247 CLASS="TYPE"
248 >time [ (<VAR
249 CLASS="REPLACEABLE"
250 >p</VAR
251 >) ] [ without time zone ]</TT
252 ></TD
253 ><TD
254 >8 bytes</TD
255 ><TD
256 >times of day only</TD
257 ><TD
258 >00:00:00.00</TD
259 ><TD
260 >23:59:59.99</TD
261 ><TD
262 >1 microsecond</TD
263 ></TR
264 ><TR
265 ><TD
266 ><TT
267 CLASS="TYPE"
268 >time [ (<VAR
269 CLASS="REPLACEABLE"
270 >p</VAR
271 >) ] with time zone</TT
272 ></TD
273 ><TD
274 >12 bytes</TD
275 ><TD
276 >times of day only, with time zone</TD
277 ><TD
278 >00:00:00.00+12</TD
279 ><TD
280 >23:59:59.99-12</TD
281 ><TD
282 >1 microsecond</TD
283 ></TR
284 ></TBODY
285 ></TABLE
286 ></DIV
287 ><DIV
288 CLASS="NOTE"
289 ><BLOCKQUOTE
290 CLASS="NOTE"
291 ><P
292 ><B
293 >Note: </B
294 >     Prior to <SPAN
295 CLASS="PRODUCTNAME"
296 >PostgreSQL</SPAN
297 > 7.3, writing just
298      <TT
299 CLASS="TYPE"
300 >timestamp</TT
301 > was equivalent to <TT
302 CLASS="TYPE"
303 >timestamp with
304      time zone</TT
305 >.  This was changed for SQL compliance.
306     </P
307 ></BLOCKQUOTE
308 ></DIV
309 ><P
310 >    <TT
311 CLASS="TYPE"
312 >time</TT
313 >, <TT
314 CLASS="TYPE"
315 >timestamp</TT
316 >, and
317     <TT
318 CLASS="TYPE"
319 >interval</TT
320 > accept an optional precision value
321     <VAR
322 CLASS="REPLACEABLE"
323 >p</VAR
324 > which specifies the number of
325     fractional digits retained in the seconds field. By default, there
326     is no explicit bound on precision.  The allowed range of
327     <VAR
328 CLASS="REPLACEABLE"
329 >p</VAR
330 > is from 0 to 6 for the
331     <TT
332 CLASS="TYPE"
333 >timestamp</TT
334 > and <TT
335 CLASS="TYPE"
336 >interval</TT
337 > types.
338    </P
339 ><DIV
340 CLASS="NOTE"
341 ><BLOCKQUOTE
342 CLASS="NOTE"
343 ><P
344 ><B
345 >Note: </B
346 >    When <TT
347 CLASS="TYPE"
348 >timestamp</TT
349 > values are stored as double precision floating-point
350     numbers (currently the default), the effective limit of precision
351     may be less than 6. <TT
352 CLASS="TYPE"
353 >timestamp</TT
354 > values are stored as seconds
355     before or after midnight 2000-01-01.  Microsecond precision is achieved for
356     dates within a few years of 2000-01-01, but the precision degrades for
357     dates further away.  When <TT
358 CLASS="TYPE"
359 >timestamp</TT
360 > values are stored as
361     eight-byte integers (a compile-time
362     option), microsecond precision is available over the full range of
363     values. However eight-byte integer timestamps have a more limited range of
364     dates than shown above: from 4713 BC up to 294276 AD.
365    </P
366 ></BLOCKQUOTE
367 ></DIV
368 ><P
369 >    For the <TT
370 CLASS="TYPE"
371 >time</TT
372 > types, the allowed range of
373     <VAR
374 CLASS="REPLACEABLE"
375 >p</VAR
376 > is from 0 to 6 when eight-byte integer
377     storage is used, or from 0 to 10 when floating-point storage is used.
378    </P
379 ><P
380 >    The type <TT
381 CLASS="TYPE"
382 >time with time zone</TT
383 > is defined by the SQL
384     standard, but the definition exhibits properties which lead to
385     questionable usefulness. In most cases, a combination of
386     <TT
387 CLASS="TYPE"
388 >date</TT
389 >, <TT
390 CLASS="TYPE"
391 >time</TT
392 >, <TT
393 CLASS="TYPE"
394 >timestamp without time
395     zone</TT
396 >, and <TT
397 CLASS="TYPE"
398 >timestamp with time zone</TT
399 > should
400     provide a complete range of date/time functionality required by
401     any application.
402    </P
403 ><P
404 >    The types <TT
405 CLASS="TYPE"
406 >abstime</TT
407 >
408     and <TT
409 CLASS="TYPE"
410 >reltime</TT
411 > are lower precision types which are used internally.
412     You are discouraged from using these types in new
413     applications and are encouraged to move any old
414     ones over when appropriate. Any or all of these internal types
415     might disappear in a future release.
416    </P
417 ><DIV
418 CLASS="SECT2"
419 ><H2
420 CLASS="SECT2"
421 ><A
422 NAME="DATATYPE-DATETIME-INPUT"
423 >8.5.1. Date/Time Input</A
424 ></H2
425 ><P
426 >     Date and time input is accepted in almost any reasonable format, including
427      ISO 8601, <ACRONYM
428 CLASS="ACRONYM"
429 >SQL</ACRONYM
430 >-compatible, 
431      traditional <SPAN
432 CLASS="PRODUCTNAME"
433 >POSTGRES</SPAN
434 >, and others.
435      For some formats, ordering of month, day, and year in date input is
436      ambiguous and there is support for specifying the expected
437      ordering of these fields.  Set the <VAR
438 CLASS="VARNAME"
439 >datestyle</VAR
440 > parameter
441      to <TT
442 CLASS="LITERAL"
443 >MDY</TT
444 > to select month-day-year interpretation,
445      <TT
446 CLASS="LITERAL"
447 >DMY</TT
448 > to select day-month-year interpretation, or
449      <TT
450 CLASS="LITERAL"
451 >YMD</TT
452 > to select year-month-day interpretation.
453     </P
454 ><P
455 >     <SPAN
456 CLASS="PRODUCTNAME"
457 >PostgreSQL</SPAN
458 > is more flexible in
459      handling date/time input than the
460      <ACRONYM
461 CLASS="ACRONYM"
462 >SQL</ACRONYM
463 > standard requires.
464      See <A
465 HREF="datetime-appendix.html"
466 >Appendix B</A
467 >
468      for the exact parsing rules of date/time input and for the
469      recognized text fields including months, days of the week, and
470      time zones. 
471     </P
472 ><P
473 >     Remember that any date or time literal input needs to be enclosed
474      in single quotes, like text strings.  Refer to 
475      <A
476 HREF="sql-syntax.html#SQL-SYNTAX-CONSTANTS-GENERIC"
477 >Section 4.1.2.4</A
478 > for more
479      information.
480      <ACRONYM
481 CLASS="ACRONYM"
482 >SQL</ACRONYM
483 > requires the following syntax
484 </P><PRE
485 CLASS="SYNOPSIS"
486 ><VAR
487 CLASS="REPLACEABLE"
488 >type</VAR
489 > [ (<VAR
490 CLASS="REPLACEABLE"
491 >p</VAR
492 >) ] '<VAR
493 CLASS="REPLACEABLE"
494 >value</VAR
495 >'</PRE
496 ><P>
497      where <VAR
498 CLASS="REPLACEABLE"
499 >p</VAR
500 > in the optional precision
501      specification is an integer corresponding to the number of
502      fractional digits in the seconds field. Precision can be
503      specified for <TT
504 CLASS="TYPE"
505 >time</TT
506 >, <TT
507 CLASS="TYPE"
508 >timestamp</TT
509 >, and
510      <TT
511 CLASS="TYPE"
512 >interval</TT
513 > types.  The allowed values are mentioned
514      above.  If no precision is specified in a constant specification,
515      it defaults to the precision of the literal value.
516     </P
517 ><DIV
518 CLASS="SECT3"
519 ><H3
520 CLASS="SECT3"
521 ><A
522 NAME="AEN4111"
523 >8.5.1.1. Dates</A
524 ></H3
525 ><A
526 NAME="AEN4113"
527 ></A
528 ><P
529 >     <A
530 HREF="datatype-datetime.html#DATATYPE-DATETIME-DATE-TABLE"
531 >Table 8-10</A
532 > shows some possible
533      inputs for the <TT
534 CLASS="TYPE"
535 >date</TT
536 > type.
537     </P
538 ><DIV
539 CLASS="TABLE"
540 ><A
541 NAME="DATATYPE-DATETIME-DATE-TABLE"
542 ></A
543 ><P
544 ><B
545 >Table 8-10. Date Input</B
546 ></P
547 ><TABLE
548 BORDER="1"
549 CLASS="CALSTABLE"
550 ><COL><COL><THEAD
551 ><TR
552 ><TH
553 >Example</TH
554 ><TH
555 >Description</TH
556 ></TR
557 ></THEAD
558 ><TBODY
559 ><TR
560 ><TD
561 >January 8, 1999</TD
562 ><TD
563 >unambiguous in any <VAR
564 CLASS="VARNAME"
565 >datestyle</VAR
566 > input mode</TD
567 ></TR
568 ><TR
569 ><TD
570 >1999-01-08</TD
571 ><TD
572 >ISO 8601; January 8 in any mode
573          (recommended format)</TD
574 ></TR
575 ><TR
576 ><TD
577 >1/8/1999</TD
578 ><TD
579 >January 8 in <TT
580 CLASS="LITERAL"
581 >MDY</TT
582 > mode;
583           August 1 in <TT
584 CLASS="LITERAL"
585 >DMY</TT
586 > mode</TD
587 ></TR
588 ><TR
589 ><TD
590 >1/18/1999</TD
591 ><TD
592 >January 18 in <TT
593 CLASS="LITERAL"
594 >MDY</TT
595 > mode;
596           rejected in other modes</TD
597 ></TR
598 ><TR
599 ><TD
600 >01/02/03</TD
601 ><TD
602 >January 2, 2003 in <TT
603 CLASS="LITERAL"
604 >MDY</TT
605 > mode;
606           February 1, 2003 in <TT
607 CLASS="LITERAL"
608 >DMY</TT
609 > mode;
610           February 3, 2001 in <TT
611 CLASS="LITERAL"
612 >YMD</TT
613 > mode
614          </TD
615 ></TR
616 ><TR
617 ><TD
618 >1999-Jan-08</TD
619 ><TD
620 >January 8 in any mode</TD
621 ></TR
622 ><TR
623 ><TD
624 >Jan-08-1999</TD
625 ><TD
626 >January 8 in any mode</TD
627 ></TR
628 ><TR
629 ><TD
630 >08-Jan-1999</TD
631 ><TD
632 >January 8 in any mode</TD
633 ></TR
634 ><TR
635 ><TD
636 >99-Jan-08</TD
637 ><TD
638 >January 8 in <TT
639 CLASS="LITERAL"
640 >YMD</TT
641 > mode, else error</TD
642 ></TR
643 ><TR
644 ><TD
645 >08-Jan-99</TD
646 ><TD
647 >January 8, except error in <TT
648 CLASS="LITERAL"
649 >YMD</TT
650 > mode</TD
651 ></TR
652 ><TR
653 ><TD
654 >Jan-08-99</TD
655 ><TD
656 >January 8, except error in <TT
657 CLASS="LITERAL"
658 >YMD</TT
659 > mode</TD
660 ></TR
661 ><TR
662 ><TD
663 >19990108</TD
664 ><TD
665 >ISO 8601; January 8, 1999 in any mode</TD
666 ></TR
667 ><TR
668 ><TD
669 >990108</TD
670 ><TD
671 >ISO 8601; January 8, 1999 in any mode</TD
672 ></TR
673 ><TR
674 ><TD
675 >1999.008</TD
676 ><TD
677 >year and day of year</TD
678 ></TR
679 ><TR
680 ><TD
681 >J2451187</TD
682 ><TD
683 >Julian day</TD
684 ></TR
685 ><TR
686 ><TD
687 >January 8, 99 BC</TD
688 ><TD
689 >year 99 before the Common Era</TD
690 ></TR
691 ></TBODY
692 ></TABLE
693 ></DIV
694 ></DIV
695 ><DIV
696 CLASS="SECT3"
697 ><H3
698 CLASS="SECT3"
699 ><A
700 NAME="AEN4184"
701 >8.5.1.2. Times</A
702 ></H3
703 ><A
704 NAME="AEN4186"
705 ></A
706 ><A
707 NAME="AEN4188"
708 ></A
709 ><A
710 NAME="AEN4190"
711 ></A
712 ><P
713 >      The time-of-day types are <TT
714 CLASS="TYPE"
715 >time [
716       (<VAR
717 CLASS="REPLACEABLE"
718 >p</VAR
719 >) ] without time zone</TT
720 > and
721       <TT
722 CLASS="TYPE"
723 >time [ (<VAR
724 CLASS="REPLACEABLE"
725 >p</VAR
726 >) ] with time
727       zone</TT
728 >.  Writing just <TT
729 CLASS="TYPE"
730 >time</TT
731 > is equivalent to
732       <TT
733 CLASS="TYPE"
734 >time without time zone</TT
735 >.
736      </P
737 ><P
738 >      Valid input for these types consists of a time of day followed
739       by an optional time zone. (See <A
740 HREF="datatype-datetime.html#DATATYPE-DATETIME-TIME-TABLE"
741 >Table 8-11</A
742
743       and <A
744 HREF="datatype-datetime.html#DATATYPE-TIMEZONE-TABLE"
745 >Table 8-12</A
746 >.)  If a time zone is
747       specified in the input for <TT
748 CLASS="TYPE"
749 >time without time zone</TT
750 >,
751       it is silently ignored.
752      </P
753 ><DIV
754 CLASS="TABLE"
755 ><A
756 NAME="DATATYPE-DATETIME-TIME-TABLE"
757 ></A
758 ><P
759 ><B
760 >Table 8-11. Time Input</B
761 ></P
762 ><TABLE
763 BORDER="1"
764 CLASS="CALSTABLE"
765 ><COL><COL><THEAD
766 ><TR
767 ><TH
768 >Example</TH
769 ><TH
770 >Description</TH
771 ></TR
772 ></THEAD
773 ><TBODY
774 ><TR
775 ><TD
776 ><TT
777 CLASS="LITERAL"
778 >04:05:06.789</TT
779 ></TD
780 ><TD
781 >ISO 8601</TD
782 ></TR
783 ><TR
784 ><TD
785 ><TT
786 CLASS="LITERAL"
787 >04:05:06</TT
788 ></TD
789 ><TD
790 >ISO 8601</TD
791 ></TR
792 ><TR
793 ><TD
794 ><TT
795 CLASS="LITERAL"
796 >04:05</TT
797 ></TD
798 ><TD
799 >ISO 8601</TD
800 ></TR
801 ><TR
802 ><TD
803 ><TT
804 CLASS="LITERAL"
805 >040506</TT
806 ></TD
807 ><TD
808 >ISO 8601</TD
809 ></TR
810 ><TR
811 ><TD
812 ><TT
813 CLASS="LITERAL"
814 >04:05 AM</TT
815 ></TD
816 ><TD
817 >same as 04:05; AM does not affect value</TD
818 ></TR
819 ><TR
820 ><TD
821 ><TT
822 CLASS="LITERAL"
823 >04:05 PM</TT
824 ></TD
825 ><TD
826 >same as 16:05; input hour must be &#60;= 12</TD
827 ></TR
828 ><TR
829 ><TD
830 ><TT
831 CLASS="LITERAL"
832 >04:05:06.789-8</TT
833 ></TD
834 ><TD
835 >ISO 8601</TD
836 ></TR
837 ><TR
838 ><TD
839 ><TT
840 CLASS="LITERAL"
841 >04:05:06-08:00</TT
842 ></TD
843 ><TD
844 >ISO 8601</TD
845 ></TR
846 ><TR
847 ><TD
848 ><TT
849 CLASS="LITERAL"
850 >04:05-08:00</TT
851 ></TD
852 ><TD
853 >ISO 8601</TD
854 ></TR
855 ><TR
856 ><TD
857 ><TT
858 CLASS="LITERAL"
859 >040506-08</TT
860 ></TD
861 ><TD
862 >ISO 8601</TD
863 ></TR
864 ><TR
865 ><TD
866 ><TT
867 CLASS="LITERAL"
868 >04:05:06 PST</TT
869 ></TD
870 ><TD
871 >time zone specified by name</TD
872 ></TR
873 ></TBODY
874 ></TABLE
875 ></DIV
876 ><DIV
877 CLASS="TABLE"
878 ><A
879 NAME="DATATYPE-TIMEZONE-TABLE"
880 ></A
881 ><P
882 ><B
883 >Table 8-12. Time Zone Input</B
884 ></P
885 ><TABLE
886 BORDER="1"
887 CLASS="CALSTABLE"
888 ><COL><COL><THEAD
889 ><TR
890 ><TH
891 >Example</TH
892 ><TH
893 >Description</TH
894 ></TR
895 ></THEAD
896 ><TBODY
897 ><TR
898 ><TD
899 ><TT
900 CLASS="LITERAL"
901 >PST</TT
902 ></TD
903 ><TD
904 >Pacific Standard Time</TD
905 ></TR
906 ><TR
907 ><TD
908 ><TT
909 CLASS="LITERAL"
910 >-8:00</TT
911 ></TD
912 ><TD
913 >ISO-8601 offset for PST</TD
914 ></TR
915 ><TR
916 ><TD
917 ><TT
918 CLASS="LITERAL"
919 >-800</TT
920 ></TD
921 ><TD
922 >ISO-8601 offset for PST</TD
923 ></TR
924 ><TR
925 ><TD
926 ><TT
927 CLASS="LITERAL"
928 >-8</TT
929 ></TD
930 ><TD
931 >ISO-8601 offset for PST</TD
932 ></TR
933 ><TR
934 ><TD
935 ><TT
936 CLASS="LITERAL"
937 >zulu</TT
938 ></TD
939 ><TD
940 >Military abbreviation for UTC</TD
941 ></TR
942 ><TR
943 ><TD
944 ><TT
945 CLASS="LITERAL"
946 >z</TT
947 ></TD
948 ><TD
949 >Short form of <TT
950 CLASS="LITERAL"
951 >zulu</TT
952 ></TD
953 ></TR
954 ></TBODY
955 ></TABLE
956 ></DIV
957 ></DIV
958 ><DIV
959 CLASS="SECT3"
960 ><H3
961 CLASS="SECT3"
962 ><A
963 NAME="AEN4288"
964 >8.5.1.3. Time Stamps</A
965 ></H3
966 ><A
967 NAME="AEN4290"
968 ></A
969 ><A
970 NAME="AEN4292"
971 ></A
972 ><A
973 NAME="AEN4294"
974 ></A
975 ><P
976 >      Valid input for the time stamp types consists of a concatenation
977       of a date and a time, followed by an optional
978       <TT
979 CLASS="LITERAL"
980 >AD</TT
981 > or <TT
982 CLASS="LITERAL"
983 >BC</TT
984 >, followed by an
985       optional time zone. Thus
986
987 </P><PRE
988 CLASS="PROGRAMLISTING"
989 >1999-01-08 04:05:06</PRE
990 ><P>
991       and
992 </P><PRE
993 CLASS="PROGRAMLISTING"
994 >1999-01-08 04:05:06 -8:00</PRE
995 ><P>
996
997       are valid values, which follow the <ACRONYM
998 CLASS="ACRONYM"
999 >ISO</ACRONYM
1000 > 8601
1001       standard.  In addition, the wide-spread format
1002
1003 </P><PRE
1004 CLASS="PROGRAMLISTING"
1005 >January 8 04:05:06 1999 PST</PRE
1006 ><P>
1007       is supported.
1008      </P
1009 ><P
1010 >      For <TT
1011 CLASS="TYPE"
1012 >timestamp [without time zone]</TT
1013 >, any explicit time
1014       zone specified in the input is silently ignored. That is, the
1015       resulting date/time value is derived from the explicit date/time
1016       fields in the input value, and is not adjusted for time zone.
1017      </P
1018 ><P
1019 >      For <TT
1020 CLASS="TYPE"
1021 >timestamp with time zone</TT
1022 >, the internally stored
1023       value is always in UTC (Universal
1024       Coordinated Time, traditionally known as Greenwich Mean Time,
1025       <ACRONYM
1026 CLASS="ACRONYM"
1027 >GMT</ACRONYM
1028 >).  An input value that has an explicit
1029       time zone specified is converted to UTC using the appropriate offset
1030       for that time zone.  If no time zone is stated in the input string,
1031       then it is assumed to be in the time zone indicated by the system's
1032       <VAR
1033 CLASS="VARNAME"
1034 >timezone</VAR
1035 > parameter, and is converted to UTC using the
1036       offset for the <VAR
1037 CLASS="VARNAME"
1038 >timezone</VAR
1039 > zone.
1040      </P
1041 ><P
1042 >      When a <TT
1043 CLASS="TYPE"
1044 >timestamp with time
1045       zone</TT
1046 > value is output, it is always converted from UTC to the
1047       current <VAR
1048 CLASS="VARNAME"
1049 >timezone</VAR
1050 > zone, and displayed as local time in that
1051       zone.  To see the time in another time zone, either change
1052       <VAR
1053 CLASS="VARNAME"
1054 >timezone</VAR
1055 > or use the <TT
1056 CLASS="LITERAL"
1057 >AT TIME ZONE</TT
1058 > construct
1059       (see <A
1060 HREF="functions-datetime.html#FUNCTIONS-DATETIME-ZONECONVERT"
1061 >Section 9.8.3</A
1062 >).
1063      </P
1064 ><P
1065 >      Conversions between <TT
1066 CLASS="TYPE"
1067 >timestamp without time zone</TT
1068 > and
1069       <TT
1070 CLASS="TYPE"
1071 >timestamp with time zone</TT
1072 > normally assume that the
1073       <TT
1074 CLASS="TYPE"
1075 >timestamp without time zone</TT
1076 > value should be taken or given
1077       as <VAR
1078 CLASS="VARNAME"
1079 >timezone</VAR
1080 > local time.  A different zone reference can
1081       be specified for the conversion using <TT
1082 CLASS="LITERAL"
1083 >AT TIME ZONE</TT
1084 >.
1085      </P
1086 ></DIV
1087 ><DIV
1088 CLASS="SECT3"
1089 ><H3
1090 CLASS="SECT3"
1091 ><A
1092 NAME="AEN4322"
1093 >8.5.1.4. Intervals</A
1094 ></H3
1095 ><A
1096 NAME="AEN4324"
1097 ></A
1098 ><P
1099 >       <TT
1100 CLASS="TYPE"
1101 >interval</TT
1102 > values can be written with the following syntax:
1103
1104 </P><PRE
1105 CLASS="PROGRAMLISTING"
1106 >[<SPAN
1107 CLASS="OPTIONAL"
1108 >@</SPAN
1109 >] <VAR
1110 CLASS="REPLACEABLE"
1111 >quantity</VAR
1112 > <VAR
1113 CLASS="REPLACEABLE"
1114 >unit</VAR
1115 > [<SPAN
1116 CLASS="OPTIONAL"
1117 ><VAR
1118 CLASS="REPLACEABLE"
1119 >quantity</VAR
1120 > <VAR
1121 CLASS="REPLACEABLE"
1122 >unit</VAR
1123 >...</SPAN
1124 >] [<SPAN
1125 CLASS="OPTIONAL"
1126 ><VAR
1127 CLASS="REPLACEABLE"
1128 >direction</VAR
1129 ></SPAN
1130 >]</PRE
1131 ><P>
1132
1133       Where: <VAR
1134 CLASS="REPLACEABLE"
1135 >quantity</VAR
1136 > is a number (possibly signed);
1137       <VAR
1138 CLASS="REPLACEABLE"
1139 >unit</VAR
1140 > is <TT
1141 CLASS="LITERAL"
1142 >second</TT
1143 >,
1144       <TT
1145 CLASS="LITERAL"
1146 >minute</TT
1147 >, <TT
1148 CLASS="LITERAL"
1149 >hour</TT
1150 >, <TT
1151 CLASS="LITERAL"
1152 >day</TT
1153 >,
1154       <TT
1155 CLASS="LITERAL"
1156 >week</TT
1157 >, <TT
1158 CLASS="LITERAL"
1159 >month</TT
1160 >, <TT
1161 CLASS="LITERAL"
1162 >year</TT
1163 >,
1164       <TT
1165 CLASS="LITERAL"
1166 >decade</TT
1167 >, <TT
1168 CLASS="LITERAL"
1169 >century</TT
1170 >, <TT
1171 CLASS="LITERAL"
1172 >millennium</TT
1173 >,
1174       or abbreviations or plurals of these units;
1175       <VAR
1176 CLASS="REPLACEABLE"
1177 >direction</VAR
1178 > can be <TT
1179 CLASS="LITERAL"
1180 >ago</TT
1181 > or
1182       empty.  The at sign (<TT
1183 CLASS="LITERAL"
1184 >@</TT
1185 >) is optional noise.  The amounts
1186       of different units are implicitly added up with appropriate
1187       sign accounting.
1188      </P
1189 ><P
1190 >      Quantities of days, hours, minutes, and seconds can be specified without
1191       explicit unit markings.  For example, <TT
1192 CLASS="LITERAL"
1193 >'1 12:59:10'</TT
1194 > is read
1195       the same as <TT
1196 CLASS="LITERAL"
1197 >'1 day 12 hours 59 min 10 sec'</TT
1198 >.
1199      </P
1200 ><P
1201 >      The optional precision
1202       <VAR
1203 CLASS="REPLACEABLE"
1204 >p</VAR
1205 > should be between 0 and 6, and
1206       defaults to the precision of the input literal.
1207      </P
1208 ></DIV
1209 ><DIV
1210 CLASS="SECT3"
1211 ><H3
1212 CLASS="SECT3"
1213 ><A
1214 NAME="AEN4357"
1215 >8.5.1.5. Special Values</A
1216 ></H3
1217 ><A
1218 NAME="AEN4359"
1219 ></A
1220 ><A
1221 NAME="AEN4362"
1222 ></A
1223 ><P
1224 >      The following <ACRONYM
1225 CLASS="ACRONYM"
1226 >SQL</ACRONYM
1227 >-compatible functions can be
1228       used as date or time values for the corresponding data type: 
1229       <TT
1230 CLASS="LITERAL"
1231 >CURRENT_DATE</TT
1232 >, <TT
1233 CLASS="LITERAL"
1234 >CURRENT_TIME</TT
1235 >, 
1236       <TT
1237 CLASS="LITERAL"
1238 >CURRENT_TIMESTAMP</TT
1239 >, <TT
1240 CLASS="LITERAL"
1241 >LOCALTIME</TT
1242 >, 
1243       <TT
1244 CLASS="LITERAL"
1245 >LOCALTIMESTAMP</TT
1246 >.  The latter four accept an 
1247       optional precision specification.  (See also <A
1248 HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
1249 >Section 9.8.4</A
1250 >.)
1251      </P
1252 ><P
1253 >      <SPAN
1254 CLASS="PRODUCTNAME"
1255 >PostgreSQL</SPAN
1256 > also supports several
1257       special date/time input values for convenience, as shown in <A
1258 HREF="datatype-datetime.html#DATATYPE-DATETIME-SPECIAL-TABLE"
1259 >Table 8-13</A
1260 >.  The values
1261       <TT
1262 CLASS="LITERAL"
1263 >infinity</TT
1264 > and <TT
1265 CLASS="LITERAL"
1266 >-infinity</TT
1267 >
1268       are specially represented inside the system and will be displayed
1269       the same way; but the others are simply notational shorthands
1270       that will be converted to ordinary date/time values when read.
1271       All of these values are treated as normal constants and need to be
1272       written in single quotes.
1273      </P
1274 ><DIV
1275 CLASS="TABLE"
1276 ><A
1277 NAME="DATATYPE-DATETIME-SPECIAL-TABLE"
1278 ></A
1279 ><P
1280 ><B
1281 >Table 8-13. Special Date/Time Inputs</B
1282 ></P
1283 ><TABLE
1284 BORDER="1"
1285 CLASS="CALSTABLE"
1286 ><COL><COL><THEAD
1287 ><TR
1288 ><TH
1289 >Input String</TH
1290 ><TH
1291 >Valid Types</TH
1292 ><TH
1293 >Description</TH
1294 ></TR
1295 ></THEAD
1296 ><TBODY
1297 ><TR
1298 ><TD
1299 ><TT
1300 CLASS="LITERAL"
1301 >epoch</TT
1302 ></TD
1303 ><TD
1304 ><TT
1305 CLASS="TYPE"
1306 >date</TT
1307 >, <TT
1308 CLASS="TYPE"
1309 >timestamp</TT
1310 ></TD
1311 ><TD
1312 >1970-01-01 00:00:00+00 (Unix system time zero)</TD
1313 ></TR
1314 ><TR
1315 ><TD
1316 ><TT
1317 CLASS="LITERAL"
1318 >infinity</TT
1319 ></TD
1320 ><TD
1321 ><TT
1322 CLASS="TYPE"
1323 >timestamp</TT
1324 ></TD
1325 ><TD
1326 >later than all other time stamps</TD
1327 ></TR
1328 ><TR
1329 ><TD
1330 ><TT
1331 CLASS="LITERAL"
1332 >-infinity</TT
1333 ></TD
1334 ><TD
1335 ><TT
1336 CLASS="TYPE"
1337 >timestamp</TT
1338 ></TD
1339 ><TD
1340 >earlier than all other time stamps</TD
1341 ></TR
1342 ><TR
1343 ><TD
1344 ><TT
1345 CLASS="LITERAL"
1346 >now</TT
1347 ></TD
1348 ><TD
1349 ><TT
1350 CLASS="TYPE"
1351 >date</TT
1352 >, <TT
1353 CLASS="TYPE"
1354 >time</TT
1355 >, <TT
1356 CLASS="TYPE"
1357 >timestamp</TT
1358 ></TD
1359 ><TD
1360 >current transaction's start time</TD
1361 ></TR
1362 ><TR
1363 ><TD
1364 ><TT
1365 CLASS="LITERAL"
1366 >today</TT
1367 ></TD
1368 ><TD
1369 ><TT
1370 CLASS="TYPE"
1371 >date</TT
1372 >, <TT
1373 CLASS="TYPE"
1374 >timestamp</TT
1375 ></TD
1376 ><TD
1377 >midnight today</TD
1378 ></TR
1379 ><TR
1380 ><TD
1381 ><TT
1382 CLASS="LITERAL"
1383 >tomorrow</TT
1384 ></TD
1385 ><TD
1386 ><TT
1387 CLASS="TYPE"
1388 >date</TT
1389 >, <TT
1390 CLASS="TYPE"
1391 >timestamp</TT
1392 ></TD
1393 ><TD
1394 >midnight tomorrow</TD
1395 ></TR
1396 ><TR
1397 ><TD
1398 ><TT
1399 CLASS="LITERAL"
1400 >yesterday</TT
1401 ></TD
1402 ><TD
1403 ><TT
1404 CLASS="TYPE"
1405 >date</TT
1406 >, <TT
1407 CLASS="TYPE"
1408 >timestamp</TT
1409 ></TD
1410 ><TD
1411 >midnight yesterday</TD
1412 ></TR
1413 ><TR
1414 ><TD
1415 ><TT
1416 CLASS="LITERAL"
1417 >allballs</TT
1418 ></TD
1419 ><TD
1420 ><TT
1421 CLASS="TYPE"
1422 >time</TT
1423 ></TD
1424 ><TD
1425 >00:00:00.00 UTC</TD
1426 ></TR
1427 ></TBODY
1428 ></TABLE
1429 ></DIV
1430 ></DIV
1431 ></DIV
1432 ><DIV
1433 CLASS="SECT2"
1434 ><H2
1435 CLASS="SECT2"
1436 ><A
1437 NAME="DATATYPE-DATETIME-OUTPUT"
1438 >8.5.2. Date/Time Output</A
1439 ></H2
1440 ><A
1441 NAME="AEN4443"
1442 ></A
1443 ><A
1444 NAME="AEN4447"
1445 ></A
1446 ><P
1447 >     The output format of the date/time types can be set to one of the four
1448      styles ISO 8601,
1449      <ACRONYM
1450 CLASS="ACRONYM"
1451 >SQL</ACRONYM
1452 > (Ingres), traditional POSTGRES, and
1453      German, using the command <TT
1454 CLASS="LITERAL"
1455 >SET datestyle</TT
1456 >.  The default
1457      is the <ACRONYM
1458 CLASS="ACRONYM"
1459 >ISO</ACRONYM
1460 > format.  (The
1461      <ACRONYM
1462 CLASS="ACRONYM"
1463 >SQL</ACRONYM
1464 > standard requires the use of the ISO 8601
1465      format.  The name of the <SPAN
1466 CLASS="QUOTE"
1467 >"SQL"</SPAN
1468 > output format is a
1469      historical accident.)  <A
1470 HREF="datatype-datetime.html#DATATYPE-DATETIME-OUTPUT-TABLE"
1471 >Table 8-14</A
1472 > shows examples of each
1473      output style.  The output of the <TT
1474 CLASS="TYPE"
1475 >date</TT
1476 > and
1477      <TT
1478 CLASS="TYPE"
1479 >time</TT
1480 > types is of course only the date or time part
1481      in accordance with the given examples.
1482     </P
1483 ><DIV
1484 CLASS="TABLE"
1485 ><A
1486 NAME="DATATYPE-DATETIME-OUTPUT-TABLE"
1487 ></A
1488 ><P
1489 ><B
1490 >Table 8-14. Date/Time Output Styles</B
1491 ></P
1492 ><TABLE
1493 BORDER="1"
1494 CLASS="CALSTABLE"
1495 ><COL><COL><COL><THEAD
1496 ><TR
1497 ><TH
1498 >Style Specification</TH
1499 ><TH
1500 >Description</TH
1501 ><TH
1502 >Example</TH
1503 ></TR
1504 ></THEAD
1505 ><TBODY
1506 ><TR
1507 ><TD
1508 >ISO</TD
1509 ><TD
1510 >ISO 8601/SQL standard</TD
1511 ><TD
1512 >1997-12-17 07:37:16-08</TD
1513 ></TR
1514 ><TR
1515 ><TD
1516 >SQL</TD
1517 ><TD
1518 >traditional style</TD
1519 ><TD
1520 >12/17/1997 07:37:16.00 PST</TD
1521 ></TR
1522 ><TR
1523 ><TD
1524 >POSTGRES</TD
1525 ><TD
1526 >original style</TD
1527 ><TD
1528 >Wed Dec 17 07:37:16 1997 PST</TD
1529 ></TR
1530 ><TR
1531 ><TD
1532 >German</TD
1533 ><TD
1534 >regional style</TD
1535 ><TD
1536 >17.12.1997 07:37:16.00 PST</TD
1537 ></TR
1538 ></TBODY
1539 ></TABLE
1540 ></DIV
1541 ><P
1542 >     In the <ACRONYM
1543 CLASS="ACRONYM"
1544 >SQL</ACRONYM
1545 > and POSTGRES styles, day appears before
1546      month if DMY field ordering has been specified, otherwise month appears
1547      before day.
1548      (See <A
1549 HREF="datatype-datetime.html#DATATYPE-DATETIME-INPUT"
1550 >Section 8.5.1</A
1551 >
1552      for how this setting also affects interpretation of input values.)
1553      <A
1554 HREF="datatype-datetime.html#DATATYPE-DATETIME-OUTPUT2-TABLE"
1555 >Table 8-15</A
1556 > shows an
1557      example.
1558     </P
1559 ><DIV
1560 CLASS="TABLE"
1561 ><A
1562 NAME="DATATYPE-DATETIME-OUTPUT2-TABLE"
1563 ></A
1564 ><P
1565 ><B
1566 >Table 8-15. Date Order Conventions</B
1567 ></P
1568 ><TABLE
1569 BORDER="1"
1570 CLASS="CALSTABLE"
1571 ><COL><COL><COL><THEAD
1572 ><TR
1573 ><TH
1574 ><VAR
1575 CLASS="VARNAME"
1576 >datestyle</VAR
1577 > Setting</TH
1578 ><TH
1579 >Input Ordering</TH
1580 ><TH
1581 >Example Output</TH
1582 ></TR
1583 ></THEAD
1584 ><TBODY
1585 ><TR
1586 ><TD
1587 ><TT
1588 CLASS="LITERAL"
1589 >SQL, DMY</TT
1590 ></TD
1591 ><TD
1592 ><VAR
1593 CLASS="REPLACEABLE"
1594 >day</VAR
1595 >/<VAR
1596 CLASS="REPLACEABLE"
1597 >month</VAR
1598 >/<VAR
1599 CLASS="REPLACEABLE"
1600 >year</VAR
1601 ></TD
1602 ><TD
1603 >17/12/1997 15:37:16.00 CET</TD
1604 ></TR
1605 ><TR
1606 ><TD
1607 ><TT
1608 CLASS="LITERAL"
1609 >SQL, MDY</TT
1610 ></TD
1611 ><TD
1612 ><VAR
1613 CLASS="REPLACEABLE"
1614 >month</VAR
1615 >/<VAR
1616 CLASS="REPLACEABLE"
1617 >day</VAR
1618 >/<VAR
1619 CLASS="REPLACEABLE"
1620 >year</VAR
1621 ></TD
1622 ><TD
1623 >12/17/1997 07:37:16.00 PST</TD
1624 ></TR
1625 ><TR
1626 ><TD
1627 ><TT
1628 CLASS="LITERAL"
1629 >Postgres, DMY</TT
1630 ></TD
1631 ><TD
1632 ><VAR
1633 CLASS="REPLACEABLE"
1634 >day</VAR
1635 >/<VAR
1636 CLASS="REPLACEABLE"
1637 >month</VAR
1638 >/<VAR
1639 CLASS="REPLACEABLE"
1640 >year</VAR
1641 ></TD
1642 ><TD
1643 >Wed 17 Dec 07:37:16 1997 PST</TD
1644 ></TR
1645 ></TBODY
1646 ></TABLE
1647 ></DIV
1648 ><P
1649 >     <TT
1650 CLASS="TYPE"
1651 >interval</TT
1652 > output looks like the input format, except
1653      that units like <TT
1654 CLASS="LITERAL"
1655 >century</TT
1656 > or
1657      <TT
1658 CLASS="LITERAL"
1659 >wek</TT
1660 > are converted to years and days and that
1661      <TT
1662 CLASS="LITERAL"
1663 >ago</TT
1664 > is converted to an appropriate sign.  In
1665      ISO mode the output looks like
1666
1667 </P><PRE
1668 CLASS="PROGRAMLISTING"
1669 >[<SPAN
1670 CLASS="OPTIONAL"
1671 > <VAR
1672 CLASS="REPLACEABLE"
1673 >quantity</VAR
1674 > <VAR
1675 CLASS="REPLACEABLE"
1676 >unit</VAR
1677 > [<SPAN
1678 CLASS="OPTIONAL"
1679 > ... </SPAN
1680 >] </SPAN
1681 >] [<SPAN
1682 CLASS="OPTIONAL"
1683 > <VAR
1684 CLASS="REPLACEABLE"
1685 >days</VAR
1686 > </SPAN
1687 >] [<SPAN
1688 CLASS="OPTIONAL"
1689 > <VAR
1690 CLASS="REPLACEABLE"
1691 >hours</VAR
1692 >:<VAR
1693 CLASS="REPLACEABLE"
1694 >minutes</VAR
1695 >:<VAR
1696 CLASS="REPLACEABLE"
1697 >sekunden</VAR
1698 > </SPAN
1699 >]</PRE
1700 ><P>
1701     </P
1702 ><P
1703 >     The date/time styles can be selected by the user using the
1704      <TT
1705 CLASS="COMMAND"
1706 >SET datestyle</TT
1707 > command, the
1708      <VAR
1709 CLASS="VARNAME"
1710 >datestyle</VAR
1711 > parameter in the
1712      <TT
1713 CLASS="FILENAME"
1714 >postgresql.conf</TT
1715 > configuration file, or the
1716      <TT
1717 CLASS="ENVAR"
1718 >PGDATESTYLE</TT
1719 > environment variable on the server or
1720      client.  The formatting function <CODE
1721 CLASS="FUNCTION"
1722 >to_char</CODE
1723 >
1724      (see <A
1725 HREF="functions-formatting.html"
1726 >Section 9.7</A
1727 >) is also available as
1728      a more flexible way to format the date/time output.
1729     </P
1730 ></DIV
1731 ><DIV
1732 CLASS="SECT2"
1733 ><H2
1734 CLASS="SECT2"
1735 ><A
1736 NAME="DATATYPE-TIMEZONES"
1737 >8.5.3. Time Zones</A
1738 ></H2
1739 ><A
1740 NAME="AEN4548"
1741 ></A
1742 ><P
1743 >    Time zones, and time-zone conventions, are influenced by
1744     political decisions, not just earth geometry. Time zones around the
1745     world became somewhat standardized during the 1900's,
1746     but continue to be prone to arbitrary changes.
1747     <SPAN
1748 CLASS="PRODUCTNAME"
1749 >PostgreSQL</SPAN
1750 > uses your operating
1751     system's underlying features to provide output time-zone
1752     support, and these systems usually contain information for only
1753     the time period 1902 through 2038 (corresponding to the full
1754     range of conventional Unix system time).
1755     <TT
1756 CLASS="TYPE"
1757 >timestamp with time zone</TT
1758 > and <TT
1759 CLASS="TYPE"
1760 >time with time
1761      zone</TT
1762 > will use time zone
1763     information only within that year range, and assume that times
1764     outside that range are in <ACRONYM
1765 CLASS="ACRONYM"
1766 >UTC</ACRONYM
1767 >.
1768     But since time zone support is derived from the underlying operating
1769     system time-zone capabilities, it can handle daylight-saving time
1770     and other special behavior.
1771    </P
1772 ><P
1773 >     <SPAN
1774 CLASS="PRODUCTNAME"
1775 >PostgreSQL</SPAN
1776 > endeavors to be compatible with
1777      the <ACRONYM
1778 CLASS="ACRONYM"
1779 >SQL</ACRONYM
1780 > standard definitions for typical usage.
1781      However, the <ACRONYM
1782 CLASS="ACRONYM"
1783 >SQL</ACRONYM
1784 > standard has an odd mix of date and
1785      time types and capabilities. Two obvious problems are:
1786
1787      <P
1788 ></P
1789 ></P><UL
1790 ><LI
1791 ><P
1792 >        Although the <TT
1793 CLASS="TYPE"
1794 >date</TT
1795 > type 
1796         does not have an associated time zone, the
1797         <TT
1798 CLASS="TYPE"
1799 >time</TT
1800 > type can.
1801         Time zones in the real world can have no meaning unless 
1802         associated with a date as well as a time
1803         since the offset may vary through the year with daylight-saving
1804         time boundaries.
1805        </P
1806 ></LI
1807 ><LI
1808 ><P
1809 >        The default time zone is specified as a constant numeric offset 
1810         from <ACRONYM
1811 CLASS="ACRONYM"
1812 >UTC</ACRONYM
1813 >. It is not possible to adapt to daylight-saving
1814         time when doing date/time arithmetic across
1815         <ACRONYM
1816 CLASS="ACRONYM"
1817 >DST</ACRONYM
1818 > boundaries.
1819        </P
1820 ></LI
1821 ></UL
1822 ><P>
1823     </P
1824 ><P
1825 >     To address these difficulties, we recommend using date/time types
1826      that contain both date and time when using time zones. We
1827      recommend <SPAN
1828 CLASS="emphasis"
1829 ><I
1830 CLASS="EMPHASIS"
1831 >not</I
1832 ></SPAN
1833 > using the type <TT
1834 CLASS="TYPE"
1835 >time with
1836      time zone</TT
1837 > (though it is supported by
1838      <SPAN
1839 CLASS="PRODUCTNAME"
1840 >PostgreSQL</SPAN
1841 > for legacy applications and
1842      for compatibility with other <ACRONYM
1843 CLASS="ACRONYM"
1844 >SQL</ACRONYM
1845 >
1846      implementations).  <SPAN
1847 CLASS="PRODUCTNAME"
1848 >PostgreSQL</SPAN
1849 > assumes
1850      your local time zone for any type containing only date or time.
1851     </P
1852 ><P
1853 >     All dates and times are stored internally in
1854      <ACRONYM
1855 CLASS="ACRONYM"
1856 >UTC</ACRONYM
1857 >.  Times are converted to local time
1858      on the database server before being sent to the client,
1859      hence by default are in the server time zone.
1860     </P
1861 ><P
1862 >     There are several ways to select the time zone used by the server:
1863
1864      <P
1865 ></P
1866 ></P><UL
1867 ><LI
1868 ><P
1869 >        The <TT
1870 CLASS="ENVAR"
1871 >TZ</TT
1872 > environment variable on the server host
1873         is used by the server as the default time zone, if no other is
1874         specified.
1875        </P
1876 ></LI
1877 ><LI
1878 ><P
1879 >        The <VAR
1880 CLASS="VARNAME"
1881 >timezone</VAR
1882 > configuration parameter can be
1883         set in the file <TT
1884 CLASS="FILENAME"
1885 >postgresql.conf</TT
1886 >.
1887        </P
1888 ></LI
1889 ><LI
1890 ><P
1891 >        The <TT
1892 CLASS="ENVAR"
1893 >PGTZ</TT
1894 > environment variable, if set at the
1895         client, is used by <SPAN
1896 CLASS="APPLICATION"
1897 >libpq</SPAN
1898 >
1899         applications to send a <TT
1900 CLASS="COMMAND"
1901 >SET TIME ZONE</TT
1902 >
1903         command to the server upon connection.
1904        </P
1905 ></LI
1906 ><LI
1907 ><P
1908 >        The <ACRONYM
1909 CLASS="ACRONYM"
1910 >SQL</ACRONYM
1911 > command <TT
1912 CLASS="COMMAND"
1913 >SET TIME ZONE</TT
1914 >
1915         sets the time zone for the session.
1916        </P
1917 ></LI
1918 ></UL
1919 ><P>
1920     </P
1921 ><DIV
1922 CLASS="NOTE"
1923 ><BLOCKQUOTE
1924 CLASS="NOTE"
1925 ><P
1926 ><B
1927 >Note: </B
1928 >       If an invalid time zone is specified, the time zone becomes
1929        <ACRONYM
1930 CLASS="ACRONYM"
1931 >UTC</ACRONYM
1932 > (on most systems anyway).
1933       </P
1934 ></BLOCKQUOTE
1935 ></DIV
1936 ><P
1937 >    Refer to <A
1938 HREF="datetime-appendix.html"
1939 >Appendix B</A
1940 > for a list of
1941     available time zones.
1942    </P
1943 ></DIV
1944 ><DIV
1945 CLASS="SECT2"
1946 ><H2
1947 CLASS="SECT2"
1948 ><A
1949 NAME="DATATYPE-DATETIME-INTERNALS"
1950 >8.5.4. Internals</A
1951 ></H2
1952 ><P
1953 >     <SPAN
1954 CLASS="PRODUCTNAME"
1955 >PostgreSQL</SPAN
1956 > uses Julian dates
1957      for all date/time calculations. They have the nice property of correctly
1958      predicting/calculating any date more recent than 4713 BC
1959      to far into the future, using the assumption that the length of the
1960      year is 365.2425 days.
1961     </P
1962 ><P
1963 >     Date conventions before the 19th century make for interesting reading,
1964      but are not consistent enough to warrant coding into a date/time handler.
1965     </P
1966 ></DIV
1967 ></DIV
1968 ><DIV
1969 CLASS="NAVFOOTER"
1970 ><HR
1971 ALIGN="LEFT"
1972 WIDTH="100%"><TABLE
1973 SUMMARY="Footer navigation table"
1974 WIDTH="100%"
1975 BORDER="0"
1976 CELLPADDING="0"
1977 CELLSPACING="0"
1978 ><TR
1979 ><TD
1980 WIDTH="33%"
1981 ALIGN="left"
1982 VALIGN="top"
1983 ><A
1984 HREF="datatype-binary.html"
1985 ACCESSKEY="P"
1986 >Prev</A
1987 ></TD
1988 ><TD
1989 WIDTH="34%"
1990 ALIGN="center"
1991 VALIGN="top"
1992 ><A
1993 HREF="index.html"
1994 ACCESSKEY="H"
1995 >Home</A
1996 ></TD
1997 ><TD
1998 WIDTH="33%"
1999 ALIGN="right"
2000 VALIGN="top"
2001 ><A
2002 HREF="datatype-boolean.html"
2003 ACCESSKEY="N"
2004 >Next</A
2005 ></TD
2006 ></TR
2007 ><TR
2008 ><TD
2009 WIDTH="33%"
2010 ALIGN="left"
2011 VALIGN="top"
2012 >Binary Data Types</TD
2013 ><TD
2014 WIDTH="34%"
2015 ALIGN="center"
2016 VALIGN="top"
2017 ><A
2018 HREF="datatype.html"
2019 ACCESSKEY="U"
2020 >Up</A
2021 ></TD
2022 ><TD
2023 WIDTH="33%"
2024 ALIGN="right"
2025 VALIGN="top"
2026 >Boolean Type</TD
2027 ></TR
2028 ></TABLE
2029 ></DIV
2030 ></BODY
2031 ></HTML
2032 >