~ubuntu-branches/ubuntu/precise/postgresql-9.1/precise-security

« back to all changes in this revision

Viewing changes to doc/src/sgml/html/functions-datetime.html

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2011-05-11 10:41:53 UTC
  • Revision ID: james.westby@ubuntu.com-20110511104153-psbh2o58553fv1m0
Tags: upstream-9.1~beta1
ImportĀ upstreamĀ versionĀ 9.1~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
2
<HTML
 
3
><HEAD
 
4
><TITLE
 
5
>Date/Time Functions and Operators</TITLE
 
6
><META
 
7
NAME="GENERATOR"
 
8
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 
9
REV="MADE"
 
10
HREF="mailto:pgsql-docs@postgresql.org"><LINK
 
11
REL="HOME"
 
12
TITLE="PostgreSQL 9.1beta1 Documentation"
 
13
HREF="index.html"><LINK
 
14
REL="UP"
 
15
TITLE="Functions and Operators"
 
16
HREF="functions.html"><LINK
 
17
REL="PREVIOUS"
 
18
TITLE="Data Type Formatting Functions"
 
19
HREF="functions-formatting.html"><LINK
 
20
REL="NEXT"
 
21
TITLE="Enum Support Functions"
 
22
HREF="functions-enum.html"><LINK
 
23
REL="STYLESHEET"
 
24
TYPE="text/css"
 
25
HREF="stylesheet.css"><META
 
26
HTTP-EQUIV="Content-Type"
 
27
CONTENT="text/html; charset=ISO-8859-1"><META
 
28
NAME="creation"
 
29
CONTENT="2011-04-27T21:20:33"></HEAD
 
30
><BODY
 
31
CLASS="SECT1"
 
32
><DIV
 
33
CLASS="NAVHEADER"
 
34
><TABLE
 
35
SUMMARY="Header navigation table"
 
36
WIDTH="100%"
 
37
BORDER="0"
 
38
CELLPADDING="0"
 
39
CELLSPACING="0"
 
40
><TR
 
41
><TH
 
42
COLSPAN="5"
 
43
ALIGN="center"
 
44
VALIGN="bottom"
 
45
><A
 
46
HREF="index.html"
 
47
>PostgreSQL 9.1beta1 Documentation</A
 
48
></TH
 
49
></TR
 
50
><TR
 
51
><TD
 
52
WIDTH="10%"
 
53
ALIGN="left"
 
54
VALIGN="top"
 
55
><A
 
56
TITLE="Data Type Formatting Functions"
 
57
HREF="functions-formatting.html"
 
58
ACCESSKEY="P"
 
59
>Prev</A
 
60
></TD
 
61
><TD
 
62
WIDTH="10%"
 
63
ALIGN="left"
 
64
VALIGN="top"
 
65
><A
 
66
TITLE="Functions and Operators"
 
67
HREF="functions.html"
 
68
>Fast Backward</A
 
69
></TD
 
70
><TD
 
71
WIDTH="60%"
 
72
ALIGN="center"
 
73
VALIGN="bottom"
 
74
>Chapter 9. Functions and Operators</TD
 
75
><TD
 
76
WIDTH="10%"
 
77
ALIGN="right"
 
78
VALIGN="top"
 
79
><A
 
80
TITLE="Functions and Operators"
 
81
HREF="functions.html"
 
82
>Fast Forward</A
 
83
></TD
 
84
><TD
 
85
WIDTH="10%"
 
86
ALIGN="right"
 
87
VALIGN="top"
 
88
><A
 
89
TITLE="Enum Support Functions"
 
90
HREF="functions-enum.html"
 
91
ACCESSKEY="N"
 
92
>Next</A
 
93
></TD
 
94
></TR
 
95
></TABLE
 
96
><HR
 
97
ALIGN="LEFT"
 
98
WIDTH="100%"></DIV
 
99
><DIV
 
100
CLASS="SECT1"
 
101
><H1
 
102
CLASS="SECT1"
 
103
><A
 
104
NAME="FUNCTIONS-DATETIME"
 
105
>9.9. Date/Time Functions and Operators</A
 
106
></H1
 
107
><P
 
108
>   <A
 
109
HREF="functions-datetime.html#FUNCTIONS-DATETIME-TABLE"
 
110
>Table 9-27</A
 
111
> shows the available
 
112
   functions for date/time value processing, with details appearing in
 
113
   the following subsections.  <A
 
114
HREF="functions-datetime.html#OPERATORS-DATETIME-TABLE"
 
115
>Table 9-26</A
 
116
> illustrates the behaviors of
 
117
   the basic arithmetic operators (<TT
 
118
CLASS="LITERAL"
 
119
>+</TT
 
120
>,
 
121
   <TT
 
122
CLASS="LITERAL"
 
123
>*</TT
 
124
>, etc.).  For formatting functions, refer to
 
125
   <A
 
126
HREF="functions-formatting.html"
 
127
>Section 9.8</A
 
128
>.  You should be familiar with
 
129
   the background information on date/time data types from <A
 
130
HREF="datatype-datetime.html"
 
131
>Section 8.5</A
 
132
>.
 
133
  </P
 
134
><P
 
135
>   All the functions and operators described below that take <TT
 
136
CLASS="TYPE"
 
137
>time</TT
 
138
> or <TT
 
139
CLASS="TYPE"
 
140
>timestamp</TT
 
141
>
 
142
   inputs actually come in two variants: one that takes <TT
 
143
CLASS="TYPE"
 
144
>time with time zone</TT
 
145
> or <TT
 
146
CLASS="TYPE"
 
147
>timestamp
 
148
   with time zone</TT
 
149
>, and one that takes <TT
 
150
CLASS="TYPE"
 
151
>time without time zone</TT
 
152
> or <TT
 
153
CLASS="TYPE"
 
154
>timestamp without time zone</TT
 
155
>.
 
156
   For brevity, these variants are not shown separately.  Also, the
 
157
   <TT
 
158
CLASS="LITERAL"
 
159
>+</TT
 
160
> and <TT
 
161
CLASS="LITERAL"
 
162
>*</TT
 
163
> operators come in commutative pairs (for
 
164
   example both date + integer and integer + date); we show only one of each
 
165
   such pair.
 
166
  </P
 
167
><DIV
 
168
CLASS="TABLE"
 
169
><A
 
170
NAME="OPERATORS-DATETIME-TABLE"
 
171
></A
 
172
><P
 
173
><B
 
174
>Table 9-26. Date/Time Operators</B
 
175
></P
 
176
><TABLE
 
177
BORDER="1"
 
178
CLASS="CALSTABLE"
 
179
><COL><COL><COL><THEAD
 
180
><TR
 
181
><TH
 
182
>Operator</TH
 
183
><TH
 
184
>Example</TH
 
185
><TH
 
186
>Result</TH
 
187
></TR
 
188
></THEAD
 
189
><TBODY
 
190
><TR
 
191
><TD
 
192
> <TT
 
193
CLASS="LITERAL"
 
194
>+</TT
 
195
> </TD
 
196
><TD
 
197
><TT
 
198
CLASS="LITERAL"
 
199
>date '2001-09-28' + integer '7'</TT
 
200
></TD
 
201
><TD
 
202
><TT
 
203
CLASS="LITERAL"
 
204
>date '2001-10-05'</TT
 
205
></TD
 
206
></TR
 
207
><TR
 
208
><TD
 
209
> <TT
 
210
CLASS="LITERAL"
 
211
>+</TT
 
212
> </TD
 
213
><TD
 
214
><TT
 
215
CLASS="LITERAL"
 
216
>date '2001-09-28' + interval '1 hour'</TT
 
217
></TD
 
218
><TD
 
219
><TT
 
220
CLASS="LITERAL"
 
221
>timestamp '2001-09-28 01:00:00'</TT
 
222
></TD
 
223
></TR
 
224
><TR
 
225
><TD
 
226
> <TT
 
227
CLASS="LITERAL"
 
228
>+</TT
 
229
> </TD
 
230
><TD
 
231
><TT
 
232
CLASS="LITERAL"
 
233
>date '2001-09-28' + time '03:00'</TT
 
234
></TD
 
235
><TD
 
236
><TT
 
237
CLASS="LITERAL"
 
238
>timestamp '2001-09-28 03:00:00'</TT
 
239
></TD
 
240
></TR
 
241
><TR
 
242
><TD
 
243
> <TT
 
244
CLASS="LITERAL"
 
245
>+</TT
 
246
> </TD
 
247
><TD
 
248
><TT
 
249
CLASS="LITERAL"
 
250
>interval '1 day' + interval '1 hour'</TT
 
251
></TD
 
252
><TD
 
253
><TT
 
254
CLASS="LITERAL"
 
255
>interval '1 day 01:00:00'</TT
 
256
></TD
 
257
></TR
 
258
><TR
 
259
><TD
 
260
> <TT
 
261
CLASS="LITERAL"
 
262
>+</TT
 
263
> </TD
 
264
><TD
 
265
><TT
 
266
CLASS="LITERAL"
 
267
>timestamp '2001-09-28 01:00' + interval '23 hours'</TT
 
268
></TD
 
269
><TD
 
270
><TT
 
271
CLASS="LITERAL"
 
272
>timestamp '2001-09-29 00:00:00'</TT
 
273
></TD
 
274
></TR
 
275
><TR
 
276
><TD
 
277
> <TT
 
278
CLASS="LITERAL"
 
279
>+</TT
 
280
> </TD
 
281
><TD
 
282
><TT
 
283
CLASS="LITERAL"
 
284
>time '01:00' + interval '3 hours'</TT
 
285
></TD
 
286
><TD
 
287
><TT
 
288
CLASS="LITERAL"
 
289
>time '04:00:00'</TT
 
290
></TD
 
291
></TR
 
292
><TR
 
293
><TD
 
294
> <TT
 
295
CLASS="LITERAL"
 
296
>-</TT
 
297
> </TD
 
298
><TD
 
299
><TT
 
300
CLASS="LITERAL"
 
301
>- interval '23 hours'</TT
 
302
></TD
 
303
><TD
 
304
><TT
 
305
CLASS="LITERAL"
 
306
>interval '-23:00:00'</TT
 
307
></TD
 
308
></TR
 
309
><TR
 
310
><TD
 
311
> <TT
 
312
CLASS="LITERAL"
 
313
>-</TT
 
314
> </TD
 
315
><TD
 
316
><TT
 
317
CLASS="LITERAL"
 
318
>date '2001-10-01' - date '2001-09-28'</TT
 
319
></TD
 
320
><TD
 
321
><TT
 
322
CLASS="LITERAL"
 
323
>integer '3'</TT
 
324
> (days)</TD
 
325
></TR
 
326
><TR
 
327
><TD
 
328
> <TT
 
329
CLASS="LITERAL"
 
330
>-</TT
 
331
> </TD
 
332
><TD
 
333
><TT
 
334
CLASS="LITERAL"
 
335
>date '2001-10-01' - integer '7'</TT
 
336
></TD
 
337
><TD
 
338
><TT
 
339
CLASS="LITERAL"
 
340
>date '2001-09-24'</TT
 
341
></TD
 
342
></TR
 
343
><TR
 
344
><TD
 
345
> <TT
 
346
CLASS="LITERAL"
 
347
>-</TT
 
348
> </TD
 
349
><TD
 
350
><TT
 
351
CLASS="LITERAL"
 
352
>date '2001-09-28' - interval '1 hour'</TT
 
353
></TD
 
354
><TD
 
355
><TT
 
356
CLASS="LITERAL"
 
357
>timestamp '2001-09-27 23:00:00'</TT
 
358
></TD
 
359
></TR
 
360
><TR
 
361
><TD
 
362
> <TT
 
363
CLASS="LITERAL"
 
364
>-</TT
 
365
> </TD
 
366
><TD
 
367
><TT
 
368
CLASS="LITERAL"
 
369
>time '05:00' - time '03:00'</TT
 
370
></TD
 
371
><TD
 
372
><TT
 
373
CLASS="LITERAL"
 
374
>interval '02:00:00'</TT
 
375
></TD
 
376
></TR
 
377
><TR
 
378
><TD
 
379
> <TT
 
380
CLASS="LITERAL"
 
381
>-</TT
 
382
> </TD
 
383
><TD
 
384
><TT
 
385
CLASS="LITERAL"
 
386
>time '05:00' - interval '2 hours'</TT
 
387
></TD
 
388
><TD
 
389
><TT
 
390
CLASS="LITERAL"
 
391
>time '03:00:00'</TT
 
392
></TD
 
393
></TR
 
394
><TR
 
395
><TD
 
396
> <TT
 
397
CLASS="LITERAL"
 
398
>-</TT
 
399
> </TD
 
400
><TD
 
401
><TT
 
402
CLASS="LITERAL"
 
403
>timestamp '2001-09-28 23:00' - interval '23 hours'</TT
 
404
></TD
 
405
><TD
 
406
><TT
 
407
CLASS="LITERAL"
 
408
>timestamp '2001-09-28 00:00:00'</TT
 
409
></TD
 
410
></TR
 
411
><TR
 
412
><TD
 
413
> <TT
 
414
CLASS="LITERAL"
 
415
>-</TT
 
416
> </TD
 
417
><TD
 
418
><TT
 
419
CLASS="LITERAL"
 
420
>interval '1 day' - interval '1 hour'</TT
 
421
></TD
 
422
><TD
 
423
><TT
 
424
CLASS="LITERAL"
 
425
>interval '1 day -01:00:00'</TT
 
426
></TD
 
427
></TR
 
428
><TR
 
429
><TD
 
430
> <TT
 
431
CLASS="LITERAL"
 
432
>-</TT
 
433
> </TD
 
434
><TD
 
435
><TT
 
436
CLASS="LITERAL"
 
437
>timestamp '2001-09-29 03:00' - timestamp '2001-09-27 12:00'</TT
 
438
></TD
 
439
><TD
 
440
><TT
 
441
CLASS="LITERAL"
 
442
>interval '1 day 15:00:00'</TT
 
443
></TD
 
444
></TR
 
445
><TR
 
446
><TD
 
447
> <TT
 
448
CLASS="LITERAL"
 
449
>*</TT
 
450
> </TD
 
451
><TD
 
452
><TT
 
453
CLASS="LITERAL"
 
454
>900 * interval '1 second'</TT
 
455
></TD
 
456
><TD
 
457
><TT
 
458
CLASS="LITERAL"
 
459
>interval '00:15:00'</TT
 
460
></TD
 
461
></TR
 
462
><TR
 
463
><TD
 
464
> <TT
 
465
CLASS="LITERAL"
 
466
>*</TT
 
467
> </TD
 
468
><TD
 
469
><TT
 
470
CLASS="LITERAL"
 
471
>21 * interval '1 day'</TT
 
472
></TD
 
473
><TD
 
474
><TT
 
475
CLASS="LITERAL"
 
476
>interval '21 days'</TT
 
477
></TD
 
478
></TR
 
479
><TR
 
480
><TD
 
481
> <TT
 
482
CLASS="LITERAL"
 
483
>*</TT
 
484
> </TD
 
485
><TD
 
486
><TT
 
487
CLASS="LITERAL"
 
488
>double precision '3.5' * interval '1 hour'</TT
 
489
></TD
 
490
><TD
 
491
><TT
 
492
CLASS="LITERAL"
 
493
>interval '03:30:00'</TT
 
494
></TD
 
495
></TR
 
496
><TR
 
497
><TD
 
498
> <TT
 
499
CLASS="LITERAL"
 
500
>/</TT
 
501
> </TD
 
502
><TD
 
503
><TT
 
504
CLASS="LITERAL"
 
505
>interval '1 hour' / double precision '1.5'</TT
 
506
></TD
 
507
><TD
 
508
><TT
 
509
CLASS="LITERAL"
 
510
>interval '00:40:00'</TT
 
511
></TD
 
512
></TR
 
513
></TBODY
 
514
></TABLE
 
515
></DIV
 
516
><DIV
 
517
CLASS="TABLE"
 
518
><A
 
519
NAME="FUNCTIONS-DATETIME-TABLE"
 
520
></A
 
521
><P
 
522
><B
 
523
>Table 9-27. Date/Time Functions</B
 
524
></P
 
525
><TABLE
 
526
BORDER="1"
 
527
CLASS="CALSTABLE"
 
528
><COL><COL><COL><COL><COL><THEAD
 
529
><TR
 
530
><TH
 
531
>Function</TH
 
532
><TH
 
533
>Return Type</TH
 
534
><TH
 
535
>Description</TH
 
536
><TH
 
537
>Example</TH
 
538
><TH
 
539
>Result</TH
 
540
></TR
 
541
></THEAD
 
542
><TBODY
 
543
><TR
 
544
><TD
 
545
>         
 
546
         <TT
 
547
CLASS="LITERAL"
 
548
><CODE
 
549
CLASS="FUNCTION"
 
550
>age(<TT
 
551
CLASS="TYPE"
 
552
>timestamp</TT
 
553
>, <TT
 
554
CLASS="TYPE"
 
555
>timestamp</TT
 
556
>)</CODE
 
557
></TT
 
558
>
 
559
        </TD
 
560
><TD
 
561
><TT
 
562
CLASS="TYPE"
 
563
>interval</TT
 
564
></TD
 
565
><TD
 
566
>Subtract arguments, producing a <SPAN
 
567
CLASS="QUOTE"
 
568
>"symbolic"</SPAN
 
569
> result that
 
570
        uses years and months</TD
 
571
><TD
 
572
><TT
 
573
CLASS="LITERAL"
 
574
>age(timestamp '2001-04-10', timestamp '1957-06-13')</TT
 
575
></TD
 
576
><TD
 
577
><TT
 
578
CLASS="LITERAL"
 
579
>43 years 9 mons 27 days</TT
 
580
></TD
 
581
></TR
 
582
><TR
 
583
><TD
 
584
><TT
 
585
CLASS="LITERAL"
 
586
><CODE
 
587
CLASS="FUNCTION"
 
588
>age(<TT
 
589
CLASS="TYPE"
 
590
>timestamp</TT
 
591
>)</CODE
 
592
></TT
 
593
></TD
 
594
><TD
 
595
><TT
 
596
CLASS="TYPE"
 
597
>interval</TT
 
598
></TD
 
599
><TD
 
600
>Subtract from <CODE
 
601
CLASS="FUNCTION"
 
602
>current_date</CODE
 
603
> (at midnight)</TD
 
604
><TD
 
605
><TT
 
606
CLASS="LITERAL"
 
607
>age(timestamp '1957-06-13')</TT
 
608
></TD
 
609
><TD
 
610
><TT
 
611
CLASS="LITERAL"
 
612
>43 years 8 mons 3 days</TT
 
613
></TD
 
614
></TR
 
615
><TR
 
616
><TD
 
617
>         
 
618
         <TT
 
619
CLASS="LITERAL"
 
620
><CODE
 
621
CLASS="FUNCTION"
 
622
>clock_timestamp()</CODE
 
623
></TT
 
624
>
 
625
        </TD
 
626
><TD
 
627
><TT
 
628
CLASS="TYPE"
 
629
>timestamp with time zone</TT
 
630
></TD
 
631
><TD
 
632
>Current date and time (changes during statement execution);
 
633
         see <A
 
634
HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
 
635
>Section 9.9.4</A
 
636
>
 
637
        </TD
 
638
><TD
 
639
>&nbsp;</TD
 
640
><TD
 
641
>&nbsp;</TD
 
642
></TR
 
643
><TR
 
644
><TD
 
645
>         
 
646
         <TT
 
647
CLASS="LITERAL"
 
648
><CODE
 
649
CLASS="FUNCTION"
 
650
>current_date</CODE
 
651
></TT
 
652
>
 
653
        </TD
 
654
><TD
 
655
><TT
 
656
CLASS="TYPE"
 
657
>date</TT
 
658
></TD
 
659
><TD
 
660
>Current date;
 
661
         see <A
 
662
HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
 
663
>Section 9.9.4</A
 
664
>
 
665
        </TD
 
666
><TD
 
667
>&nbsp;</TD
 
668
><TD
 
669
>&nbsp;</TD
 
670
></TR
 
671
><TR
 
672
><TD
 
673
>         
 
674
         <TT
 
675
CLASS="LITERAL"
 
676
><CODE
 
677
CLASS="FUNCTION"
 
678
>current_time</CODE
 
679
></TT
 
680
>
 
681
        </TD
 
682
><TD
 
683
><TT
 
684
CLASS="TYPE"
 
685
>time with time zone</TT
 
686
></TD
 
687
><TD
 
688
>Current time of day;
 
689
         see <A
 
690
HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
 
691
>Section 9.9.4</A
 
692
>
 
693
        </TD
 
694
><TD
 
695
>&nbsp;</TD
 
696
><TD
 
697
>&nbsp;</TD
 
698
></TR
 
699
><TR
 
700
><TD
 
701
>         
 
702
         <TT
 
703
CLASS="LITERAL"
 
704
><CODE
 
705
CLASS="FUNCTION"
 
706
>current_timestamp</CODE
 
707
></TT
 
708
>
 
709
        </TD
 
710
><TD
 
711
><TT
 
712
CLASS="TYPE"
 
713
>timestamp with time zone</TT
 
714
></TD
 
715
><TD
 
716
>Current date and time (start of current transaction);
 
717
         see <A
 
718
HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
 
719
>Section 9.9.4</A
 
720
>
 
721
        </TD
 
722
><TD
 
723
>&nbsp;</TD
 
724
><TD
 
725
>&nbsp;</TD
 
726
></TR
 
727
><TR
 
728
><TD
 
729
>         
 
730
         <TT
 
731
CLASS="LITERAL"
 
732
><CODE
 
733
CLASS="FUNCTION"
 
734
>date_part(<TT
 
735
CLASS="TYPE"
 
736
>text</TT
 
737
>, <TT
 
738
CLASS="TYPE"
 
739
>timestamp</TT
 
740
>)</CODE
 
741
></TT
 
742
>
 
743
        </TD
 
744
><TD
 
745
><TT
 
746
CLASS="TYPE"
 
747
>double precision</TT
 
748
></TD
 
749
><TD
 
750
>Get subfield (equivalent to <CODE
 
751
CLASS="FUNCTION"
 
752
>extract</CODE
 
753
>);
 
754
         see <A
 
755
HREF="functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT"
 
756
>Section 9.9.1</A
 
757
>
 
758
        </TD
 
759
><TD
 
760
><TT
 
761
CLASS="LITERAL"
 
762
>date_part('hour', timestamp '2001-02-16 20:38:40')</TT
 
763
></TD
 
764
><TD
 
765
><TT
 
766
CLASS="LITERAL"
 
767
>20</TT
 
768
></TD
 
769
></TR
 
770
><TR
 
771
><TD
 
772
><TT
 
773
CLASS="LITERAL"
 
774
><CODE
 
775
CLASS="FUNCTION"
 
776
>date_part(<TT
 
777
CLASS="TYPE"
 
778
>text</TT
 
779
>, <TT
 
780
CLASS="TYPE"
 
781
>interval</TT
 
782
>)</CODE
 
783
></TT
 
784
></TD
 
785
><TD
 
786
><TT
 
787
CLASS="TYPE"
 
788
>double precision</TT
 
789
></TD
 
790
><TD
 
791
>Get subfield (equivalent to
 
792
         <CODE
 
793
CLASS="FUNCTION"
 
794
>extract</CODE
 
795
>); see <A
 
796
HREF="functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT"
 
797
>Section 9.9.1</A
 
798
>
 
799
        </TD
 
800
><TD
 
801
><TT
 
802
CLASS="LITERAL"
 
803
>date_part('month', interval '2 years 3 months')</TT
 
804
></TD
 
805
><TD
 
806
><TT
 
807
CLASS="LITERAL"
 
808
>3</TT
 
809
></TD
 
810
></TR
 
811
><TR
 
812
><TD
 
813
>         
 
814
         <TT
 
815
CLASS="LITERAL"
 
816
><CODE
 
817
CLASS="FUNCTION"
 
818
>date_trunc(<TT
 
819
CLASS="TYPE"
 
820
>text</TT
 
821
>, <TT
 
822
CLASS="TYPE"
 
823
>timestamp</TT
 
824
>)</CODE
 
825
></TT
 
826
>
 
827
        </TD
 
828
><TD
 
829
><TT
 
830
CLASS="TYPE"
 
831
>timestamp</TT
 
832
></TD
 
833
><TD
 
834
>Truncate to specified precision; see also <A
 
835
HREF="functions-datetime.html#FUNCTIONS-DATETIME-TRUNC"
 
836
>Section 9.9.2</A
 
837
>
 
838
        </TD
 
839
><TD
 
840
><TT
 
841
CLASS="LITERAL"
 
842
>date_trunc('hour', timestamp '2001-02-16 20:38:40')</TT
 
843
></TD
 
844
><TD
 
845
><TT
 
846
CLASS="LITERAL"
 
847
>2001-02-16 20:00:00</TT
 
848
></TD
 
849
></TR
 
850
><TR
 
851
><TD
 
852
>         
 
853
         <TT
 
854
CLASS="LITERAL"
 
855
><CODE
 
856
CLASS="FUNCTION"
 
857
>extract</CODE
 
858
>(<TT
 
859
CLASS="PARAMETER"
 
860
>field</TT
 
861
> from
 
862
         <TT
 
863
CLASS="TYPE"
 
864
>timestamp</TT
 
865
>)</TT
 
866
>
 
867
        </TD
 
868
><TD
 
869
><TT
 
870
CLASS="TYPE"
 
871
>double precision</TT
 
872
></TD
 
873
><TD
 
874
>Get subfield; see <A
 
875
HREF="functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT"
 
876
>Section 9.9.1</A
 
877
>
 
878
        </TD
 
879
><TD
 
880
><TT
 
881
CLASS="LITERAL"
 
882
>extract(hour from timestamp '2001-02-16 20:38:40')</TT
 
883
></TD
 
884
><TD
 
885
><TT
 
886
CLASS="LITERAL"
 
887
>20</TT
 
888
></TD
 
889
></TR
 
890
><TR
 
891
><TD
 
892
><TT
 
893
CLASS="LITERAL"
 
894
><CODE
 
895
CLASS="FUNCTION"
 
896
>extract</CODE
 
897
>(<TT
 
898
CLASS="PARAMETER"
 
899
>field</TT
 
900
> from
 
901
         <TT
 
902
CLASS="TYPE"
 
903
>interval</TT
 
904
>)</TT
 
905
></TD
 
906
><TD
 
907
><TT
 
908
CLASS="TYPE"
 
909
>double precision</TT
 
910
></TD
 
911
><TD
 
912
>Get subfield; see <A
 
913
HREF="functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT"
 
914
>Section 9.9.1</A
 
915
>
 
916
        </TD
 
917
><TD
 
918
><TT
 
919
CLASS="LITERAL"
 
920
>extract(month from interval '2 years 3 months')</TT
 
921
></TD
 
922
><TD
 
923
><TT
 
924
CLASS="LITERAL"
 
925
>3</TT
 
926
></TD
 
927
></TR
 
928
><TR
 
929
><TD
 
930
>         
 
931
         <TT
 
932
CLASS="LITERAL"
 
933
><CODE
 
934
CLASS="FUNCTION"
 
935
>isfinite(<TT
 
936
CLASS="TYPE"
 
937
>date</TT
 
938
>)</CODE
 
939
></TT
 
940
>
 
941
        </TD
 
942
><TD
 
943
><TT
 
944
CLASS="TYPE"
 
945
>boolean</TT
 
946
></TD
 
947
><TD
 
948
>Test for finite date (not +/-infinity)</TD
 
949
><TD
 
950
><TT
 
951
CLASS="LITERAL"
 
952
>isfinite(date '2001-02-16')</TT
 
953
></TD
 
954
><TD
 
955
><TT
 
956
CLASS="LITERAL"
 
957
>true</TT
 
958
></TD
 
959
></TR
 
960
><TR
 
961
><TD
 
962
><TT
 
963
CLASS="LITERAL"
 
964
><CODE
 
965
CLASS="FUNCTION"
 
966
>isfinite(<TT
 
967
CLASS="TYPE"
 
968
>timestamp</TT
 
969
>)</CODE
 
970
></TT
 
971
></TD
 
972
><TD
 
973
><TT
 
974
CLASS="TYPE"
 
975
>boolean</TT
 
976
></TD
 
977
><TD
 
978
>Test for finite time stamp (not +/-infinity)</TD
 
979
><TD
 
980
><TT
 
981
CLASS="LITERAL"
 
982
>isfinite(timestamp '2001-02-16 21:28:30')</TT
 
983
></TD
 
984
><TD
 
985
><TT
 
986
CLASS="LITERAL"
 
987
>true</TT
 
988
></TD
 
989
></TR
 
990
><TR
 
991
><TD
 
992
><TT
 
993
CLASS="LITERAL"
 
994
><CODE
 
995
CLASS="FUNCTION"
 
996
>isfinite(<TT
 
997
CLASS="TYPE"
 
998
>interval</TT
 
999
>)</CODE
 
1000
></TT
 
1001
></TD
 
1002
><TD
 
1003
><TT
 
1004
CLASS="TYPE"
 
1005
>boolean</TT
 
1006
></TD
 
1007
><TD
 
1008
>Test for finite interval</TD
 
1009
><TD
 
1010
><TT
 
1011
CLASS="LITERAL"
 
1012
>isfinite(interval '4 hours')</TT
 
1013
></TD
 
1014
><TD
 
1015
><TT
 
1016
CLASS="LITERAL"
 
1017
>true</TT
 
1018
></TD
 
1019
></TR
 
1020
><TR
 
1021
><TD
 
1022
>         
 
1023
         <TT
 
1024
CLASS="LITERAL"
 
1025
><CODE
 
1026
CLASS="FUNCTION"
 
1027
>justify_days(<TT
 
1028
CLASS="TYPE"
 
1029
>interval</TT
 
1030
>)</CODE
 
1031
></TT
 
1032
>
 
1033
        </TD
 
1034
><TD
 
1035
><TT
 
1036
CLASS="TYPE"
 
1037
>interval</TT
 
1038
></TD
 
1039
><TD
 
1040
>Adjust interval so 30-day time periods are represented as months</TD
 
1041
><TD
 
1042
><TT
 
1043
CLASS="LITERAL"
 
1044
>justify_days(interval '35 days')</TT
 
1045
></TD
 
1046
><TD
 
1047
><TT
 
1048
CLASS="LITERAL"
 
1049
>1 mon 5 days</TT
 
1050
></TD
 
1051
></TR
 
1052
><TR
 
1053
><TD
 
1054
>         
 
1055
         <TT
 
1056
CLASS="LITERAL"
 
1057
><CODE
 
1058
CLASS="FUNCTION"
 
1059
>justify_hours(<TT
 
1060
CLASS="TYPE"
 
1061
>interval</TT
 
1062
>)</CODE
 
1063
></TT
 
1064
>
 
1065
        </TD
 
1066
><TD
 
1067
><TT
 
1068
CLASS="TYPE"
 
1069
>interval</TT
 
1070
></TD
 
1071
><TD
 
1072
>Adjust interval so 24-hour time periods are represented as days</TD
 
1073
><TD
 
1074
><TT
 
1075
CLASS="LITERAL"
 
1076
>justify_hours(interval '27 hours')</TT
 
1077
></TD
 
1078
><TD
 
1079
><TT
 
1080
CLASS="LITERAL"
 
1081
>1 day 03:00:00</TT
 
1082
></TD
 
1083
></TR
 
1084
><TR
 
1085
><TD
 
1086
>         
 
1087
         <TT
 
1088
CLASS="LITERAL"
 
1089
><CODE
 
1090
CLASS="FUNCTION"
 
1091
>justify_interval(<TT
 
1092
CLASS="TYPE"
 
1093
>interval</TT
 
1094
>)</CODE
 
1095
></TT
 
1096
>
 
1097
        </TD
 
1098
><TD
 
1099
><TT
 
1100
CLASS="TYPE"
 
1101
>interval</TT
 
1102
></TD
 
1103
><TD
 
1104
>Adjust interval using <CODE
 
1105
CLASS="FUNCTION"
 
1106
>justify_days</CODE
 
1107
> and <CODE
 
1108
CLASS="FUNCTION"
 
1109
>justify_hours</CODE
 
1110
>, with additional sign adjustments</TD
 
1111
><TD
 
1112
><TT
 
1113
CLASS="LITERAL"
 
1114
>justify_interval(interval '1 mon -1 hour')</TT
 
1115
></TD
 
1116
><TD
 
1117
><TT
 
1118
CLASS="LITERAL"
 
1119
>29 days 23:00:00</TT
 
1120
></TD
 
1121
></TR
 
1122
><TR
 
1123
><TD
 
1124
>         
 
1125
         <TT
 
1126
CLASS="LITERAL"
 
1127
><CODE
 
1128
CLASS="FUNCTION"
 
1129
>localtime</CODE
 
1130
></TT
 
1131
>
 
1132
        </TD
 
1133
><TD
 
1134
><TT
 
1135
CLASS="TYPE"
 
1136
>time</TT
 
1137
></TD
 
1138
><TD
 
1139
>Current time of day;
 
1140
         see <A
 
1141
HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
 
1142
>Section 9.9.4</A
 
1143
>
 
1144
        </TD
 
1145
><TD
 
1146
>&nbsp;</TD
 
1147
><TD
 
1148
>&nbsp;</TD
 
1149
></TR
 
1150
><TR
 
1151
><TD
 
1152
>         
 
1153
         <TT
 
1154
CLASS="LITERAL"
 
1155
><CODE
 
1156
CLASS="FUNCTION"
 
1157
>localtimestamp</CODE
 
1158
></TT
 
1159
>
 
1160
        </TD
 
1161
><TD
 
1162
><TT
 
1163
CLASS="TYPE"
 
1164
>timestamp</TT
 
1165
></TD
 
1166
><TD
 
1167
>Current date and time (start of current transaction);
 
1168
         see <A
 
1169
HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
 
1170
>Section 9.9.4</A
 
1171
>
 
1172
        </TD
 
1173
><TD
 
1174
>&nbsp;</TD
 
1175
><TD
 
1176
>&nbsp;</TD
 
1177
></TR
 
1178
><TR
 
1179
><TD
 
1180
>         
 
1181
         <TT
 
1182
CLASS="LITERAL"
 
1183
><CODE
 
1184
CLASS="FUNCTION"
 
1185
>now()</CODE
 
1186
></TT
 
1187
>
 
1188
        </TD
 
1189
><TD
 
1190
><TT
 
1191
CLASS="TYPE"
 
1192
>timestamp with time zone</TT
 
1193
></TD
 
1194
><TD
 
1195
>Current date and time (start of current transaction);
 
1196
         see <A
 
1197
HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
 
1198
>Section 9.9.4</A
 
1199
>
 
1200
        </TD
 
1201
><TD
 
1202
>&nbsp;</TD
 
1203
><TD
 
1204
>&nbsp;</TD
 
1205
></TR
 
1206
><TR
 
1207
><TD
 
1208
>         
 
1209
         <TT
 
1210
CLASS="LITERAL"
 
1211
><CODE
 
1212
CLASS="FUNCTION"
 
1213
>statement_timestamp()</CODE
 
1214
></TT
 
1215
>
 
1216
        </TD
 
1217
><TD
 
1218
><TT
 
1219
CLASS="TYPE"
 
1220
>timestamp with time zone</TT
 
1221
></TD
 
1222
><TD
 
1223
>Current date and time (start of current statement);
 
1224
         see <A
 
1225
HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
 
1226
>Section 9.9.4</A
 
1227
>
 
1228
        </TD
 
1229
><TD
 
1230
>&nbsp;</TD
 
1231
><TD
 
1232
>&nbsp;</TD
 
1233
></TR
 
1234
><TR
 
1235
><TD
 
1236
>         
 
1237
         <TT
 
1238
CLASS="LITERAL"
 
1239
><CODE
 
1240
CLASS="FUNCTION"
 
1241
>timeofday()</CODE
 
1242
></TT
 
1243
>
 
1244
        </TD
 
1245
><TD
 
1246
><TT
 
1247
CLASS="TYPE"
 
1248
>text</TT
 
1249
></TD
 
1250
><TD
 
1251
>Current date and time
 
1252
         (like <CODE
 
1253
CLASS="FUNCTION"
 
1254
>clock_timestamp</CODE
 
1255
>, but as a <TT
 
1256
CLASS="TYPE"
 
1257
>text</TT
 
1258
> string);
 
1259
         see <A
 
1260
HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
 
1261
>Section 9.9.4</A
 
1262
>
 
1263
        </TD
 
1264
><TD
 
1265
>&nbsp;</TD
 
1266
><TD
 
1267
>&nbsp;</TD
 
1268
></TR
 
1269
><TR
 
1270
><TD
 
1271
>         
 
1272
         <TT
 
1273
CLASS="LITERAL"
 
1274
><CODE
 
1275
CLASS="FUNCTION"
 
1276
>transaction_timestamp()</CODE
 
1277
></TT
 
1278
>
 
1279
        </TD
 
1280
><TD
 
1281
><TT
 
1282
CLASS="TYPE"
 
1283
>timestamp with time zone</TT
 
1284
></TD
 
1285
><TD
 
1286
>Current date and time (start of current transaction);
 
1287
         see <A
 
1288
HREF="functions-datetime.html#FUNCTIONS-DATETIME-CURRENT"
 
1289
>Section 9.9.4</A
 
1290
>
 
1291
        </TD
 
1292
><TD
 
1293
>&nbsp;</TD
 
1294
><TD
 
1295
>&nbsp;</TD
 
1296
></TR
 
1297
></TBODY
 
1298
></TABLE
 
1299
></DIV
 
1300
><P
 
1301
>    In addition to these functions, the SQL <TT
 
1302
CLASS="LITERAL"
 
1303
>OVERLAPS</TT
 
1304
> operator is
 
1305
    supported:
 
1306
</P><PRE
 
1307
CLASS="SYNOPSIS"
 
1308
>(<TT
 
1309
CLASS="REPLACEABLE"
 
1310
><I
 
1311
>start1</I
 
1312
></TT
 
1313
>, <TT
 
1314
CLASS="REPLACEABLE"
 
1315
><I
 
1316
>end1</I
 
1317
></TT
 
1318
>) OVERLAPS (<TT
 
1319
CLASS="REPLACEABLE"
 
1320
><I
 
1321
>start2</I
 
1322
></TT
 
1323
>, <TT
 
1324
CLASS="REPLACEABLE"
 
1325
><I
 
1326
>end2</I
 
1327
></TT
 
1328
>)
 
1329
(<TT
 
1330
CLASS="REPLACEABLE"
 
1331
><I
 
1332
>start1</I
 
1333
></TT
 
1334
>, <TT
 
1335
CLASS="REPLACEABLE"
 
1336
><I
 
1337
>length1</I
 
1338
></TT
 
1339
>) OVERLAPS (<TT
 
1340
CLASS="REPLACEABLE"
 
1341
><I
 
1342
>start2</I
 
1343
></TT
 
1344
>, <TT
 
1345
CLASS="REPLACEABLE"
 
1346
><I
 
1347
>length2</I
 
1348
></TT
 
1349
>)</PRE
 
1350
><P>
 
1351
    This expression yields true when two time periods (defined by their
 
1352
    endpoints) overlap, false when they do not overlap.  The endpoints
 
1353
    can be specified as pairs of dates, times, or time stamps; or as
 
1354
    a date, time, or time stamp followed by an interval.  When a pair
 
1355
    of values is provided, either the start or the end can be written
 
1356
    first; <TT
 
1357
CLASS="LITERAL"
 
1358
>OVERLAPS</TT
 
1359
> automatically takes the earlier value
 
1360
    of the pair as the start.  Each time period is considered to
 
1361
    represent the half-open interval <TT
 
1362
CLASS="REPLACEABLE"
 
1363
><I
 
1364
>start</I
 
1365
></TT
 
1366
> <TT
 
1367
CLASS="LITERAL"
 
1368
>&lt;=</TT
 
1369
>
 
1370
    <TT
 
1371
CLASS="REPLACEABLE"
 
1372
><I
 
1373
>time</I
 
1374
></TT
 
1375
> <TT
 
1376
CLASS="LITERAL"
 
1377
>&lt;</TT
 
1378
> <TT
 
1379
CLASS="REPLACEABLE"
 
1380
><I
 
1381
>end</I
 
1382
></TT
 
1383
>, unless
 
1384
    <TT
 
1385
CLASS="REPLACEABLE"
 
1386
><I
 
1387
>start</I
 
1388
></TT
 
1389
> and <TT
 
1390
CLASS="REPLACEABLE"
 
1391
><I
 
1392
>end</I
 
1393
></TT
 
1394
> are equal in which case it
 
1395
    represents that single time instant.  This means for instance that two
 
1396
    time periods with only an endpoint in common do not overlap.
 
1397
   </P
 
1398
><PRE
 
1399
CLASS="SCREEN"
 
1400
>SELECT (DATE '2001-02-16', DATE '2001-12-21') OVERLAPS
 
1401
       (DATE '2001-10-30', DATE '2002-10-30');
 
1402
<I
 
1403
CLASS="LINEANNOTATION"
 
1404
>Result: </I
 
1405
><SAMP
 
1406
CLASS="COMPUTEROUTPUT"
 
1407
>true</SAMP
 
1408
>
 
1409
SELECT (DATE '2001-02-16', INTERVAL '100 days') OVERLAPS
 
1410
       (DATE '2001-10-30', DATE '2002-10-30');
 
1411
<I
 
1412
CLASS="LINEANNOTATION"
 
1413
>Result: </I
 
1414
><SAMP
 
1415
CLASS="COMPUTEROUTPUT"
 
1416
>false</SAMP
 
1417
>
 
1418
SELECT (DATE '2001-10-29', DATE '2001-10-30') OVERLAPS
 
1419
       (DATE '2001-10-30', DATE '2001-10-31');
 
1420
<I
 
1421
CLASS="LINEANNOTATION"
 
1422
>Result: </I
 
1423
><SAMP
 
1424
CLASS="COMPUTEROUTPUT"
 
1425
>false</SAMP
 
1426
>
 
1427
SELECT (DATE '2001-10-30', DATE '2001-10-30') OVERLAPS
 
1428
       (DATE '2001-10-30', DATE '2001-10-31');
 
1429
<I
 
1430
CLASS="LINEANNOTATION"
 
1431
>Result: </I
 
1432
><SAMP
 
1433
CLASS="COMPUTEROUTPUT"
 
1434
>true</SAMP
 
1435
></PRE
 
1436
><P
 
1437
>   When adding an <TT
 
1438
CLASS="TYPE"
 
1439
>interval</TT
 
1440
> value to (or subtracting an
 
1441
   <TT
 
1442
CLASS="TYPE"
 
1443
>interval</TT
 
1444
> value from) a <TT
 
1445
CLASS="TYPE"
 
1446
>timestamp with time zone</TT
 
1447
>
 
1448
   value, the days component advances (or decrements) the date of the
 
1449
   <TT
 
1450
CLASS="TYPE"
 
1451
>timestamp with time zone</TT
 
1452
> by the indicated number of days.
 
1453
   Across daylight saving time changes (with the session time zone set to a
 
1454
   time zone that recognizes DST), this means <TT
 
1455
CLASS="LITERAL"
 
1456
>interval '1 day'</TT
 
1457
>
 
1458
   does not necessarily equal <TT
 
1459
CLASS="LITERAL"
 
1460
>interval '24 hours'</TT
 
1461
>.
 
1462
   For example, with the session time zone set to <TT
 
1463
CLASS="LITERAL"
 
1464
>CST7CDT</TT
 
1465
>,
 
1466
   <TT
 
1467
CLASS="LITERAL"
 
1468
>timestamp with time zone '2005-04-02 12:00-07' + interval '1 day' </TT
 
1469
>
 
1470
   will produce <TT
 
1471
CLASS="LITERAL"
 
1472
>timestamp with time zone '2005-04-03 12:00-06'</TT
 
1473
>,
 
1474
   while adding <TT
 
1475
CLASS="LITERAL"
 
1476
>interval '24 hours'</TT
 
1477
> to the same initial
 
1478
   <TT
 
1479
CLASS="TYPE"
 
1480
>timestamp with time zone</TT
 
1481
> produces
 
1482
   <TT
 
1483
CLASS="LITERAL"
 
1484
>timestamp with time zone '2005-04-03 13:00-06'</TT
 
1485
>, as there is
 
1486
   a change in daylight saving time at <TT
 
1487
CLASS="LITERAL"
 
1488
>2005-04-03 02:00</TT
 
1489
> in time zone
 
1490
   <TT
 
1491
CLASS="LITERAL"
 
1492
>CST7CDT</TT
 
1493
>.
 
1494
  </P
 
1495
><P
 
1496
>   Note there can be ambiguity in the <TT
 
1497
CLASS="LITERAL"
 
1498
>months</TT
 
1499
> returned by
 
1500
   <CODE
 
1501
CLASS="FUNCTION"
 
1502
>age</CODE
 
1503
> because different months have a different number of
 
1504
   days.  <SPAN
 
1505
CLASS="PRODUCTNAME"
 
1506
>PostgreSQL</SPAN
 
1507
>'s approach uses the month from the
 
1508
   earlier of the two dates when calculating partial months.  For example,
 
1509
   <TT
 
1510
CLASS="LITERAL"
 
1511
>age('2004-06-01', '2004-04-30')</TT
 
1512
> uses April to yield
 
1513
   <TT
 
1514
CLASS="LITERAL"
 
1515
>1 mon 1 day</TT
 
1516
>, while using May would yield <TT
 
1517
CLASS="LITERAL"
 
1518
>1 mon 2
 
1519
   days</TT
 
1520
> because May has 31 days, while April has only 30.
 
1521
  </P
 
1522
><DIV
 
1523
CLASS="SECT2"
 
1524
><H2
 
1525
CLASS="SECT2"
 
1526
><A
 
1527
NAME="FUNCTIONS-DATETIME-EXTRACT"
 
1528
>9.9.1. <CODE
 
1529
CLASS="FUNCTION"
 
1530
>EXTRACT</CODE
 
1531
>, <CODE
 
1532
CLASS="FUNCTION"
 
1533
>date_part</CODE
 
1534
></A
 
1535
></H2
 
1536
><PRE
 
1537
CLASS="SYNOPSIS"
 
1538
>EXTRACT(<TT
 
1539
CLASS="REPLACEABLE"
 
1540
><I
 
1541
>field</I
 
1542
></TT
 
1543
> FROM <TT
 
1544
CLASS="REPLACEABLE"
 
1545
><I
 
1546
>source</I
 
1547
></TT
 
1548
>)</PRE
 
1549
><P
 
1550
>    The <CODE
 
1551
CLASS="FUNCTION"
 
1552
>extract</CODE
 
1553
> function retrieves subfields
 
1554
    such as year or hour from date/time values.
 
1555
    <TT
 
1556
CLASS="REPLACEABLE"
 
1557
><I
 
1558
>source</I
 
1559
></TT
 
1560
> must be a value expression of
 
1561
    type <TT
 
1562
CLASS="TYPE"
 
1563
>timestamp</TT
 
1564
>, <TT
 
1565
CLASS="TYPE"
 
1566
>time</TT
 
1567
>, or <TT
 
1568
CLASS="TYPE"
 
1569
>interval</TT
 
1570
>.
 
1571
    (Expressions of type <TT
 
1572
CLASS="TYPE"
 
1573
>date</TT
 
1574
> are
 
1575
    cast to <TT
 
1576
CLASS="TYPE"
 
1577
>timestamp</TT
 
1578
> and can therefore be used as
 
1579
    well.)  <TT
 
1580
CLASS="REPLACEABLE"
 
1581
><I
 
1582
>field</I
 
1583
></TT
 
1584
> is an identifier or
 
1585
    string that selects what field to extract from the source value.
 
1586
    The <CODE
 
1587
CLASS="FUNCTION"
 
1588
>extract</CODE
 
1589
> function returns values of type
 
1590
    <TT
 
1591
CLASS="TYPE"
 
1592
>double precision</TT
 
1593
>.
 
1594
    The following are valid field names:
 
1595
 
 
1596
    
 
1597
    <P
 
1598
></P
 
1599
></P><DIV
 
1600
CLASS="VARIABLELIST"
 
1601
><DL
 
1602
><DT
 
1603
><TT
 
1604
CLASS="LITERAL"
 
1605
>century</TT
 
1606
></DT
 
1607
><DD
 
1608
><P
 
1609
>        The century
 
1610
       </P
 
1611
><PRE
 
1612
CLASS="SCREEN"
 
1613
>SELECT EXTRACT(CENTURY FROM TIMESTAMP '2000-12-16 12:21:13');
 
1614
<I
 
1615
CLASS="LINEANNOTATION"
 
1616
>Result: </I
 
1617
><SAMP
 
1618
CLASS="COMPUTEROUTPUT"
 
1619
>20</SAMP
 
1620
>
 
1621
SELECT EXTRACT(CENTURY FROM TIMESTAMP '2001-02-16 20:38:40');
 
1622
<I
 
1623
CLASS="LINEANNOTATION"
 
1624
>Result: </I
 
1625
><SAMP
 
1626
CLASS="COMPUTEROUTPUT"
 
1627
>21</SAMP
 
1628
></PRE
 
1629
><P
 
1630
>        The first century starts at 0001-01-01 00:00:00 AD, although
 
1631
        they did not know it at the time. This definition applies to all
 
1632
        Gregorian calendar countries. There is no century number 0,
 
1633
        you go from -1 century to 1 century.
 
1634
 
 
1635
        If you disagree with this, please write your complaint to:
 
1636
        Pope, Cathedral Saint-Peter of Roma, Vatican.
 
1637
       </P
 
1638
><P
 
1639
>        <SPAN
 
1640
CLASS="PRODUCTNAME"
 
1641
>PostgreSQL</SPAN
 
1642
> releases before 8.0 did not
 
1643
        follow the conventional numbering of centuries, but just returned
 
1644
        the year field divided by 100.
 
1645
       </P
 
1646
></DD
 
1647
><DT
 
1648
><TT
 
1649
CLASS="LITERAL"
 
1650
>day</TT
 
1651
></DT
 
1652
><DD
 
1653
><P
 
1654
>        For <TT
 
1655
CLASS="TYPE"
 
1656
>timestamp</TT
 
1657
> values, the day (of the month) field
 
1658
        (1 - 31) ; for <TT
 
1659
CLASS="TYPE"
 
1660
>interval</TT
 
1661
> values, the number of days
 
1662
       </P
 
1663
><PRE
 
1664
CLASS="SCREEN"
 
1665
>SELECT EXTRACT(DAY FROM TIMESTAMP '2001-02-16 20:38:40');
 
1666
<I
 
1667
CLASS="LINEANNOTATION"
 
1668
>Result: </I
 
1669
><SAMP
 
1670
CLASS="COMPUTEROUTPUT"
 
1671
>16</SAMP
 
1672
>
 
1673
 
 
1674
SELECT EXTRACT(DAY FROM INTERVAL '40 days 1 minute');
 
1675
<I
 
1676
CLASS="LINEANNOTATION"
 
1677
>Result: </I
 
1678
><SAMP
 
1679
CLASS="COMPUTEROUTPUT"
 
1680
>40</SAMP
 
1681
></PRE
 
1682
></DD
 
1683
><DT
 
1684
><TT
 
1685
CLASS="LITERAL"
 
1686
>decade</TT
 
1687
></DT
 
1688
><DD
 
1689
><P
 
1690
>        The year field divided by 10
 
1691
       </P
 
1692
><PRE
 
1693
CLASS="SCREEN"
 
1694
>SELECT EXTRACT(DECADE FROM TIMESTAMP '2001-02-16 20:38:40');
 
1695
<I
 
1696
CLASS="LINEANNOTATION"
 
1697
>Result: </I
 
1698
><SAMP
 
1699
CLASS="COMPUTEROUTPUT"
 
1700
>200</SAMP
 
1701
></PRE
 
1702
></DD
 
1703
><DT
 
1704
><TT
 
1705
CLASS="LITERAL"
 
1706
>dow</TT
 
1707
></DT
 
1708
><DD
 
1709
><P
 
1710
>        The day of the week as Sunday(<TT
 
1711
CLASS="LITERAL"
 
1712
>0</TT
 
1713
>) to
 
1714
        Saturday(<TT
 
1715
CLASS="LITERAL"
 
1716
>6</TT
 
1717
>)
 
1718
       </P
 
1719
><PRE
 
1720
CLASS="SCREEN"
 
1721
>SELECT EXTRACT(DOW FROM TIMESTAMP '2001-02-16 20:38:40');
 
1722
<I
 
1723
CLASS="LINEANNOTATION"
 
1724
>Result: </I
 
1725
><SAMP
 
1726
CLASS="COMPUTEROUTPUT"
 
1727
>5</SAMP
 
1728
></PRE
 
1729
><P
 
1730
>        Note that <CODE
 
1731
CLASS="FUNCTION"
 
1732
>extract</CODE
 
1733
>'s day of the week numbering
 
1734
        differs from that of the <CODE
 
1735
CLASS="FUNCTION"
 
1736
>to_char(...,
 
1737
        'D')</CODE
 
1738
> function.
 
1739
       </P
 
1740
></DD
 
1741
><DT
 
1742
><TT
 
1743
CLASS="LITERAL"
 
1744
>doy</TT
 
1745
></DT
 
1746
><DD
 
1747
><P
 
1748
>        The day of the year (1 - 365/366)
 
1749
       </P
 
1750
><PRE
 
1751
CLASS="SCREEN"
 
1752
>SELECT EXTRACT(DOY FROM TIMESTAMP '2001-02-16 20:38:40');
 
1753
<I
 
1754
CLASS="LINEANNOTATION"
 
1755
>Result: </I
 
1756
><SAMP
 
1757
CLASS="COMPUTEROUTPUT"
 
1758
>47</SAMP
 
1759
></PRE
 
1760
></DD
 
1761
><DT
 
1762
><TT
 
1763
CLASS="LITERAL"
 
1764
>epoch</TT
 
1765
></DT
 
1766
><DD
 
1767
><P
 
1768
>        For <TT
 
1769
CLASS="TYPE"
 
1770
>date</TT
 
1771
> and <TT
 
1772
CLASS="TYPE"
 
1773
>timestamp</TT
 
1774
> values, the
 
1775
        number of seconds since 1970-01-01 00:00:00 UTC (can be negative);
 
1776
        for <TT
 
1777
CLASS="TYPE"
 
1778
>interval</TT
 
1779
> values, the total number
 
1780
        of seconds in the interval
 
1781
       </P
 
1782
><PRE
 
1783
CLASS="SCREEN"
 
1784
>SELECT EXTRACT(EPOCH FROM TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40.12-08');
 
1785
<I
 
1786
CLASS="LINEANNOTATION"
 
1787
>Result: </I
 
1788
><SAMP
 
1789
CLASS="COMPUTEROUTPUT"
 
1790
>982384720.12</SAMP
 
1791
>
 
1792
 
 
1793
SELECT EXTRACT(EPOCH FROM INTERVAL '5 days 3 hours');
 
1794
<I
 
1795
CLASS="LINEANNOTATION"
 
1796
>Result: </I
 
1797
><SAMP
 
1798
CLASS="COMPUTEROUTPUT"
 
1799
>442800</SAMP
 
1800
></PRE
 
1801
><P
 
1802
>        Here is how you can convert an epoch value back to a time
 
1803
        stamp:
 
1804
       </P
 
1805
><PRE
 
1806
CLASS="SCREEN"
 
1807
>SELECT TIMESTAMP WITH TIME ZONE 'epoch' + 982384720.12 * INTERVAL '1 second';</PRE
 
1808
><P
 
1809
>        (The <CODE
 
1810
CLASS="FUNCTION"
 
1811
>to_timestamp</CODE
 
1812
> function encapsulates the above
 
1813
        conversion.)
 
1814
       </P
 
1815
></DD
 
1816
><DT
 
1817
><TT
 
1818
CLASS="LITERAL"
 
1819
>hour</TT
 
1820
></DT
 
1821
><DD
 
1822
><P
 
1823
>        The hour field (0 - 23)
 
1824
       </P
 
1825
><PRE
 
1826
CLASS="SCREEN"
 
1827
>SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');
 
1828
<I
 
1829
CLASS="LINEANNOTATION"
 
1830
>Result: </I
 
1831
><SAMP
 
1832
CLASS="COMPUTEROUTPUT"
 
1833
>20</SAMP
 
1834
></PRE
 
1835
></DD
 
1836
><DT
 
1837
><TT
 
1838
CLASS="LITERAL"
 
1839
>isodow</TT
 
1840
></DT
 
1841
><DD
 
1842
><P
 
1843
>        The day of the week as Monday(<TT
 
1844
CLASS="LITERAL"
 
1845
>1</TT
 
1846
>) to
 
1847
        Sunday(<TT
 
1848
CLASS="LITERAL"
 
1849
>7</TT
 
1850
>)
 
1851
       </P
 
1852
><PRE
 
1853
CLASS="SCREEN"
 
1854
>SELECT EXTRACT(ISODOW FROM TIMESTAMP '2001-02-18 20:38:40');
 
1855
<I
 
1856
CLASS="LINEANNOTATION"
 
1857
>Result: </I
 
1858
><SAMP
 
1859
CLASS="COMPUTEROUTPUT"
 
1860
>7</SAMP
 
1861
></PRE
 
1862
><P
 
1863
>        This is identical to <TT
 
1864
CLASS="LITERAL"
 
1865
>dow</TT
 
1866
> except for Sunday.  This
 
1867
        matches the <ACRONYM
 
1868
CLASS="ACRONYM"
 
1869
>ISO</ACRONYM
 
1870
> 8601 day of the week numbering.
 
1871
       </P
 
1872
></DD
 
1873
><DT
 
1874
><TT
 
1875
CLASS="LITERAL"
 
1876
>isoyear</TT
 
1877
></DT
 
1878
><DD
 
1879
><P
 
1880
>        The <ACRONYM
 
1881
CLASS="ACRONYM"
 
1882
>ISO</ACRONYM
 
1883
> 8601 year that the date falls in (not applicable to intervals)
 
1884
       </P
 
1885
><PRE
 
1886
CLASS="SCREEN"
 
1887
>SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-01');
 
1888
<I
 
1889
CLASS="LINEANNOTATION"
 
1890
>Result: </I
 
1891
><SAMP
 
1892
CLASS="COMPUTEROUTPUT"
 
1893
>2005</SAMP
 
1894
>
 
1895
SELECT EXTRACT(ISOYEAR FROM DATE '2006-01-02');
 
1896
<I
 
1897
CLASS="LINEANNOTATION"
 
1898
>Result: </I
 
1899
><SAMP
 
1900
CLASS="COMPUTEROUTPUT"
 
1901
>2006</SAMP
 
1902
></PRE
 
1903
><P
 
1904
>        Each <ACRONYM
 
1905
CLASS="ACRONYM"
 
1906
>ISO</ACRONYM
 
1907
> year begins with the Monday of the week containing the 4th of January, so in early January or late December the <ACRONYM
 
1908
CLASS="ACRONYM"
 
1909
>ISO</ACRONYM
 
1910
> year may be different from the Gregorian year.  See the <TT
 
1911
CLASS="LITERAL"
 
1912
>week</TT
 
1913
> field for more information.
 
1914
       </P
 
1915
><P
 
1916
>        This field is not available in PostgreSQL releases prior to 8.3.
 
1917
       </P
 
1918
></DD
 
1919
><DT
 
1920
><TT
 
1921
CLASS="LITERAL"
 
1922
>microseconds</TT
 
1923
></DT
 
1924
><DD
 
1925
><P
 
1926
>        The seconds field, including fractional parts, multiplied by 1
 
1927
        000 000;  note that this includes full seconds
 
1928
       </P
 
1929
><PRE
 
1930
CLASS="SCREEN"
 
1931
>SELECT EXTRACT(MICROSECONDS FROM TIME '17:12:28.5');
 
1932
<I
 
1933
CLASS="LINEANNOTATION"
 
1934
>Result: </I
 
1935
><SAMP
 
1936
CLASS="COMPUTEROUTPUT"
 
1937
>28500000</SAMP
 
1938
></PRE
 
1939
></DD
 
1940
><DT
 
1941
><TT
 
1942
CLASS="LITERAL"
 
1943
>millennium</TT
 
1944
></DT
 
1945
><DD
 
1946
><P
 
1947
>        The millennium
 
1948
       </P
 
1949
><PRE
 
1950
CLASS="SCREEN"
 
1951
>SELECT EXTRACT(MILLENNIUM FROM TIMESTAMP '2001-02-16 20:38:40');
 
1952
<I
 
1953
CLASS="LINEANNOTATION"
 
1954
>Result: </I
 
1955
><SAMP
 
1956
CLASS="COMPUTEROUTPUT"
 
1957
>3</SAMP
 
1958
></PRE
 
1959
><P
 
1960
>        Years in the 1900s are in the second millennium.
 
1961
        The third millennium started January 1, 2001.
 
1962
       </P
 
1963
><P
 
1964
>        <SPAN
 
1965
CLASS="PRODUCTNAME"
 
1966
>PostgreSQL</SPAN
 
1967
> releases before 8.0 did not
 
1968
        follow the conventional numbering of millennia, but just returned
 
1969
        the year field divided by 1000.
 
1970
       </P
 
1971
></DD
 
1972
><DT
 
1973
><TT
 
1974
CLASS="LITERAL"
 
1975
>milliseconds</TT
 
1976
></DT
 
1977
><DD
 
1978
><P
 
1979
>        The seconds field, including fractional parts, multiplied by
 
1980
        1000.  Note that this includes full seconds.
 
1981
       </P
 
1982
><PRE
 
1983
CLASS="SCREEN"
 
1984
>SELECT EXTRACT(MILLISECONDS FROM TIME '17:12:28.5');
 
1985
<I
 
1986
CLASS="LINEANNOTATION"
 
1987
>Result: </I
 
1988
><SAMP
 
1989
CLASS="COMPUTEROUTPUT"
 
1990
>28500</SAMP
 
1991
></PRE
 
1992
></DD
 
1993
><DT
 
1994
><TT
 
1995
CLASS="LITERAL"
 
1996
>minute</TT
 
1997
></DT
 
1998
><DD
 
1999
><P
 
2000
>        The minutes field (0 - 59)
 
2001
       </P
 
2002
><PRE
 
2003
CLASS="SCREEN"
 
2004
>SELECT EXTRACT(MINUTE FROM TIMESTAMP '2001-02-16 20:38:40');
 
2005
<I
 
2006
CLASS="LINEANNOTATION"
 
2007
>Result: </I
 
2008
><SAMP
 
2009
CLASS="COMPUTEROUTPUT"
 
2010
>38</SAMP
 
2011
></PRE
 
2012
></DD
 
2013
><DT
 
2014
><TT
 
2015
CLASS="LITERAL"
 
2016
>month</TT
 
2017
></DT
 
2018
><DD
 
2019
><P
 
2020
>        For <TT
 
2021
CLASS="TYPE"
 
2022
>timestamp</TT
 
2023
> values, the number of the month
 
2024
        within the year (1 - 12) ; for <TT
 
2025
CLASS="TYPE"
 
2026
>interval</TT
 
2027
> values,
 
2028
        the number of months, modulo 12 (0 - 11)
 
2029
       </P
 
2030
><PRE
 
2031
CLASS="SCREEN"
 
2032
>SELECT EXTRACT(MONTH FROM TIMESTAMP '2001-02-16 20:38:40');
 
2033
<I
 
2034
CLASS="LINEANNOTATION"
 
2035
>Result: </I
 
2036
><SAMP
 
2037
CLASS="COMPUTEROUTPUT"
 
2038
>2</SAMP
 
2039
>
 
2040
 
 
2041
SELECT EXTRACT(MONTH FROM INTERVAL '2 years 3 months');
 
2042
<I
 
2043
CLASS="LINEANNOTATION"
 
2044
>Result: </I
 
2045
><SAMP
 
2046
CLASS="COMPUTEROUTPUT"
 
2047
>3</SAMP
 
2048
>
 
2049
 
 
2050
SELECT EXTRACT(MONTH FROM INTERVAL '2 years 13 months');
 
2051
<I
 
2052
CLASS="LINEANNOTATION"
 
2053
>Result: </I
 
2054
><SAMP
 
2055
CLASS="COMPUTEROUTPUT"
 
2056
>1</SAMP
 
2057
></PRE
 
2058
></DD
 
2059
><DT
 
2060
><TT
 
2061
CLASS="LITERAL"
 
2062
>quarter</TT
 
2063
></DT
 
2064
><DD
 
2065
><P
 
2066
>        The quarter of the year (1 - 4) that the date is in
 
2067
       </P
 
2068
><PRE
 
2069
CLASS="SCREEN"
 
2070
>SELECT EXTRACT(QUARTER FROM TIMESTAMP '2001-02-16 20:38:40');
 
2071
<I
 
2072
CLASS="LINEANNOTATION"
 
2073
>Result: </I
 
2074
><SAMP
 
2075
CLASS="COMPUTEROUTPUT"
 
2076
>1</SAMP
 
2077
></PRE
 
2078
></DD
 
2079
><DT
 
2080
><TT
 
2081
CLASS="LITERAL"
 
2082
>second</TT
 
2083
></DT
 
2084
><DD
 
2085
><P
 
2086
>        The seconds field, including fractional parts (0 -
 
2087
        59<A
 
2088
NAME="AEN13609"
 
2089
HREF="#FTN.AEN13609"
 
2090
><SPAN
 
2091
CLASS="footnote"
 
2092
>[1]</SPAN
 
2093
></A
 
2094
>)
 
2095
       </P
 
2096
><PRE
 
2097
CLASS="SCREEN"
 
2098
>SELECT EXTRACT(SECOND FROM TIMESTAMP '2001-02-16 20:38:40');
 
2099
<I
 
2100
CLASS="LINEANNOTATION"
 
2101
>Result: </I
 
2102
><SAMP
 
2103
CLASS="COMPUTEROUTPUT"
 
2104
>40</SAMP
 
2105
>
 
2106
 
 
2107
SELECT EXTRACT(SECOND FROM TIME '17:12:28.5');
 
2108
<I
 
2109
CLASS="LINEANNOTATION"
 
2110
>Result: </I
 
2111
><SAMP
 
2112
CLASS="COMPUTEROUTPUT"
 
2113
>28.5</SAMP
 
2114
></PRE
 
2115
></DD
 
2116
><DT
 
2117
><TT
 
2118
CLASS="LITERAL"
 
2119
>timezone</TT
 
2120
></DT
 
2121
><DD
 
2122
><P
 
2123
>        The time zone offset from UTC, measured in seconds.  Positive values
 
2124
        correspond to time zones east of UTC, negative values to
 
2125
        zones west of UTC.
 
2126
       </P
 
2127
></DD
 
2128
><DT
 
2129
><TT
 
2130
CLASS="LITERAL"
 
2131
>timezone_hour</TT
 
2132
></DT
 
2133
><DD
 
2134
><P
 
2135
>        The hour component of the time zone offset
 
2136
       </P
 
2137
></DD
 
2138
><DT
 
2139
><TT
 
2140
CLASS="LITERAL"
 
2141
>timezone_minute</TT
 
2142
></DT
 
2143
><DD
 
2144
><P
 
2145
>        The minute component of the time zone offset
 
2146
       </P
 
2147
></DD
 
2148
><DT
 
2149
><TT
 
2150
CLASS="LITERAL"
 
2151
>week</TT
 
2152
></DT
 
2153
><DD
 
2154
><P
 
2155
>        The number of the week of the year that the day is in.  By definition
 
2156
        (<ACRONYM
 
2157
CLASS="ACRONYM"
 
2158
>ISO</ACRONYM
 
2159
> 8601), the first week of a year
 
2160
        contains January 4 of that year.  (The <ACRONYM
 
2161
CLASS="ACRONYM"
 
2162
>ISO</ACRONYM
 
2163
>-8601
 
2164
        week starts on Monday.)  In other words, the first Thursday of
 
2165
        a year is in week 1 of that year.
 
2166
       </P
 
2167
><P
 
2168
>        Because of this, it is possible for early January dates to be part of the
 
2169
        52nd or 53rd week of the previous year.  For example, <TT
 
2170
CLASS="LITERAL"
 
2171
>2005-01-01</TT
 
2172
>
 
2173
        is part of the 53rd week of year 2004, and <TT
 
2174
CLASS="LITERAL"
 
2175
>2006-01-01</TT
 
2176
> is part of
 
2177
        the 52nd week of year 2005.
 
2178
       </P
 
2179
><PRE
 
2180
CLASS="SCREEN"
 
2181
>SELECT EXTRACT(WEEK FROM TIMESTAMP '2001-02-16 20:38:40');
 
2182
<I
 
2183
CLASS="LINEANNOTATION"
 
2184
>Result: </I
 
2185
><SAMP
 
2186
CLASS="COMPUTEROUTPUT"
 
2187
>7</SAMP
 
2188
></PRE
 
2189
></DD
 
2190
><DT
 
2191
><TT
 
2192
CLASS="LITERAL"
 
2193
>year</TT
 
2194
></DT
 
2195
><DD
 
2196
><P
 
2197
>        The year field.  Keep in mind there is no <TT
 
2198
CLASS="LITERAL"
 
2199
>0 AD</TT
 
2200
>, so subtracting
 
2201
        <TT
 
2202
CLASS="LITERAL"
 
2203
>BC</TT
 
2204
> years from <TT
 
2205
CLASS="LITERAL"
 
2206
>AD</TT
 
2207
> years should be done with care.
 
2208
       </P
 
2209
><PRE
 
2210
CLASS="SCREEN"
 
2211
>SELECT EXTRACT(YEAR FROM TIMESTAMP '2001-02-16 20:38:40');
 
2212
<I
 
2213
CLASS="LINEANNOTATION"
 
2214
>Result: </I
 
2215
><SAMP
 
2216
CLASS="COMPUTEROUTPUT"
 
2217
>2001</SAMP
 
2218
></PRE
 
2219
></DD
 
2220
></DL
 
2221
></DIV
 
2222
><P>
 
2223
   </P
 
2224
><P
 
2225
>    The <CODE
 
2226
CLASS="FUNCTION"
 
2227
>extract</CODE
 
2228
> function is primarily intended
 
2229
    for computational processing.  For formatting date/time values for
 
2230
    display, see <A
 
2231
HREF="functions-formatting.html"
 
2232
>Section 9.8</A
 
2233
>.
 
2234
   </P
 
2235
><P
 
2236
>    The <CODE
 
2237
CLASS="FUNCTION"
 
2238
>date_part</CODE
 
2239
> function is modeled on the traditional
 
2240
    <SPAN
 
2241
CLASS="PRODUCTNAME"
 
2242
>Ingres</SPAN
 
2243
> equivalent to the
 
2244
    <ACRONYM
 
2245
CLASS="ACRONYM"
 
2246
>SQL</ACRONYM
 
2247
>-standard function <CODE
 
2248
CLASS="FUNCTION"
 
2249
>extract</CODE
 
2250
>:
 
2251
</P><PRE
 
2252
CLASS="SYNOPSIS"
 
2253
>date_part('<TT
 
2254
CLASS="REPLACEABLE"
 
2255
><I
 
2256
>field</I
 
2257
></TT
 
2258
>', <TT
 
2259
CLASS="REPLACEABLE"
 
2260
><I
 
2261
>source</I
 
2262
></TT
 
2263
>)</PRE
 
2264
><P>
 
2265
    Note that here the <TT
 
2266
CLASS="REPLACEABLE"
 
2267
><I
 
2268
>field</I
 
2269
></TT
 
2270
> parameter needs to
 
2271
    be a string value, not a name.  The valid field names for
 
2272
    <CODE
 
2273
CLASS="FUNCTION"
 
2274
>date_part</CODE
 
2275
> are the same as for
 
2276
    <CODE
 
2277
CLASS="FUNCTION"
 
2278
>extract</CODE
 
2279
>.
 
2280
   </P
 
2281
><PRE
 
2282
CLASS="SCREEN"
 
2283
>SELECT date_part('day', TIMESTAMP '2001-02-16 20:38:40');
 
2284
<I
 
2285
CLASS="LINEANNOTATION"
 
2286
>Result: </I
 
2287
><SAMP
 
2288
CLASS="COMPUTEROUTPUT"
 
2289
>16</SAMP
 
2290
>
 
2291
 
 
2292
SELECT date_part('hour', INTERVAL '4 hours 3 minutes');
 
2293
<I
 
2294
CLASS="LINEANNOTATION"
 
2295
>Result: </I
 
2296
><SAMP
 
2297
CLASS="COMPUTEROUTPUT"
 
2298
>4</SAMP
 
2299
></PRE
 
2300
></DIV
 
2301
><DIV
 
2302
CLASS="SECT2"
 
2303
><H2
 
2304
CLASS="SECT2"
 
2305
><A
 
2306
NAME="FUNCTIONS-DATETIME-TRUNC"
 
2307
>9.9.2. <CODE
 
2308
CLASS="FUNCTION"
 
2309
>date_trunc</CODE
 
2310
></A
 
2311
></H2
 
2312
><P
 
2313
>    The function <CODE
 
2314
CLASS="FUNCTION"
 
2315
>date_trunc</CODE
 
2316
> is conceptually
 
2317
    similar to the <CODE
 
2318
CLASS="FUNCTION"
 
2319
>trunc</CODE
 
2320
> function for numbers.
 
2321
   </P
 
2322
><P
 
2323
></P><PRE
 
2324
CLASS="SYNOPSIS"
 
2325
>date_trunc('<TT
 
2326
CLASS="REPLACEABLE"
 
2327
><I
 
2328
>field</I
 
2329
></TT
 
2330
>', <TT
 
2331
CLASS="REPLACEABLE"
 
2332
><I
 
2333
>source</I
 
2334
></TT
 
2335
>)</PRE
 
2336
><P>
 
2337
    <TT
 
2338
CLASS="REPLACEABLE"
 
2339
><I
 
2340
>source</I
 
2341
></TT
 
2342
> is a value expression of type
 
2343
    <TT
 
2344
CLASS="TYPE"
 
2345
>timestamp</TT
 
2346
> or <TT
 
2347
CLASS="TYPE"
 
2348
>interval</TT
 
2349
>.
 
2350
    (Values of type <TT
 
2351
CLASS="TYPE"
 
2352
>date</TT
 
2353
> and
 
2354
    <TT
 
2355
CLASS="TYPE"
 
2356
>time</TT
 
2357
> are cast automatically to <TT
 
2358
CLASS="TYPE"
 
2359
>timestamp</TT
 
2360
> or
 
2361
    <TT
 
2362
CLASS="TYPE"
 
2363
>interval</TT
 
2364
>, respectively.)
 
2365
    <TT
 
2366
CLASS="REPLACEABLE"
 
2367
><I
 
2368
>field</I
 
2369
></TT
 
2370
> selects to which precision to
 
2371
    truncate the input value.  The return value is of type
 
2372
    <TT
 
2373
CLASS="TYPE"
 
2374
>timestamp</TT
 
2375
> or <TT
 
2376
CLASS="TYPE"
 
2377
>interval</TT
 
2378
>
 
2379
    with all fields that are less significant than the
 
2380
    selected one set to zero (or one, for day and month).
 
2381
   </P
 
2382
><P
 
2383
>    Valid values for <TT
 
2384
CLASS="REPLACEABLE"
 
2385
><I
 
2386
>field</I
 
2387
></TT
 
2388
> are:
 
2389
    <P
 
2390
></P
 
2391
><TABLE
 
2392
BORDER="0"
 
2393
><TBODY
 
2394
><TR
 
2395
><TD
 
2396
><TT
 
2397
CLASS="LITERAL"
 
2398
>microseconds</TT
 
2399
></TD
 
2400
></TR
 
2401
><TR
 
2402
><TD
 
2403
><TT
 
2404
CLASS="LITERAL"
 
2405
>milliseconds</TT
 
2406
></TD
 
2407
></TR
 
2408
><TR
 
2409
><TD
 
2410
><TT
 
2411
CLASS="LITERAL"
 
2412
>second</TT
 
2413
></TD
 
2414
></TR
 
2415
><TR
 
2416
><TD
 
2417
><TT
 
2418
CLASS="LITERAL"
 
2419
>minute</TT
 
2420
></TD
 
2421
></TR
 
2422
><TR
 
2423
><TD
 
2424
><TT
 
2425
CLASS="LITERAL"
 
2426
>hour</TT
 
2427
></TD
 
2428
></TR
 
2429
><TR
 
2430
><TD
 
2431
><TT
 
2432
CLASS="LITERAL"
 
2433
>day</TT
 
2434
></TD
 
2435
></TR
 
2436
><TR
 
2437
><TD
 
2438
><TT
 
2439
CLASS="LITERAL"
 
2440
>week</TT
 
2441
></TD
 
2442
></TR
 
2443
><TR
 
2444
><TD
 
2445
><TT
 
2446
CLASS="LITERAL"
 
2447
>month</TT
 
2448
></TD
 
2449
></TR
 
2450
><TR
 
2451
><TD
 
2452
><TT
 
2453
CLASS="LITERAL"
 
2454
>quarter</TT
 
2455
></TD
 
2456
></TR
 
2457
><TR
 
2458
><TD
 
2459
><TT
 
2460
CLASS="LITERAL"
 
2461
>year</TT
 
2462
></TD
 
2463
></TR
 
2464
><TR
 
2465
><TD
 
2466
><TT
 
2467
CLASS="LITERAL"
 
2468
>decade</TT
 
2469
></TD
 
2470
></TR
 
2471
><TR
 
2472
><TD
 
2473
><TT
 
2474
CLASS="LITERAL"
 
2475
>century</TT
 
2476
></TD
 
2477
></TR
 
2478
><TR
 
2479
><TD
 
2480
><TT
 
2481
CLASS="LITERAL"
 
2482
>millennium</TT
 
2483
></TD
 
2484
></TR
 
2485
></TBODY
 
2486
></TABLE
 
2487
><P
 
2488
></P
 
2489
>
 
2490
   </P
 
2491
><P
 
2492
>    Examples:
 
2493
</P><PRE
 
2494
CLASS="SCREEN"
 
2495
>SELECT date_trunc('hour', TIMESTAMP '2001-02-16 20:38:40');
 
2496
<I
 
2497
CLASS="LINEANNOTATION"
 
2498
>Result: </I
 
2499
><SAMP
 
2500
CLASS="COMPUTEROUTPUT"
 
2501
>2001-02-16 20:00:00</SAMP
 
2502
>
 
2503
 
 
2504
SELECT date_trunc('year', TIMESTAMP '2001-02-16 20:38:40');
 
2505
<I
 
2506
CLASS="LINEANNOTATION"
 
2507
>Result: </I
 
2508
><SAMP
 
2509
CLASS="COMPUTEROUTPUT"
 
2510
>2001-01-01 00:00:00</SAMP
 
2511
></PRE
 
2512
><P>
 
2513
   </P
 
2514
></DIV
 
2515
><DIV
 
2516
CLASS="SECT2"
 
2517
><H2
 
2518
CLASS="SECT2"
 
2519
><A
 
2520
NAME="FUNCTIONS-DATETIME-ZONECONVERT"
 
2521
>9.9.3. <TT
 
2522
CLASS="LITERAL"
 
2523
>AT TIME ZONE</TT
 
2524
></A
 
2525
></H2
 
2526
><P
 
2527
>    The <TT
 
2528
CLASS="LITERAL"
 
2529
>AT TIME ZONE</TT
 
2530
> construct allows conversions
 
2531
    of time stamps to different time zones.  <A
 
2532
HREF="functions-datetime.html#FUNCTIONS-DATETIME-ZONECONVERT-TABLE"
 
2533
>Table 9-28</A
 
2534
> shows its
 
2535
    variants.
 
2536
   </P
 
2537
><DIV
 
2538
CLASS="TABLE"
 
2539
><A
 
2540
NAME="FUNCTIONS-DATETIME-ZONECONVERT-TABLE"
 
2541
></A
 
2542
><P
 
2543
><B
 
2544
>Table 9-28. <TT
 
2545
CLASS="LITERAL"
 
2546
>AT TIME ZONE</TT
 
2547
> Variants</B
 
2548
></P
 
2549
><TABLE
 
2550
BORDER="1"
 
2551
CLASS="CALSTABLE"
 
2552
><COL><COL><COL><THEAD
 
2553
><TR
 
2554
><TH
 
2555
>Expression</TH
 
2556
><TH
 
2557
>Return Type</TH
 
2558
><TH
 
2559
>Description</TH
 
2560
></TR
 
2561
></THEAD
 
2562
><TBODY
 
2563
><TR
 
2564
><TD
 
2565
>         <TT
 
2566
CLASS="LITERAL"
 
2567
><TT
 
2568
CLASS="TYPE"
 
2569
>timestamp without time zone</TT
 
2570
> AT TIME ZONE <TT
 
2571
CLASS="REPLACEABLE"
 
2572
><I
 
2573
>zone</I
 
2574
></TT
 
2575
></TT
 
2576
>
 
2577
        </TD
 
2578
><TD
 
2579
><TT
 
2580
CLASS="TYPE"
 
2581
>timestamp with time zone</TT
 
2582
></TD
 
2583
><TD
 
2584
>Treat given time stamp <SPAN
 
2585
CLASS="emphasis"
 
2586
><I
 
2587
CLASS="EMPHASIS"
 
2588
>without time zone</I
 
2589
></SPAN
 
2590
> as located in the specified time zone</TD
 
2591
></TR
 
2592
><TR
 
2593
><TD
 
2594
>         <TT
 
2595
CLASS="LITERAL"
 
2596
><TT
 
2597
CLASS="TYPE"
 
2598
>timestamp with time zone</TT
 
2599
> AT TIME ZONE <TT
 
2600
CLASS="REPLACEABLE"
 
2601
><I
 
2602
>zone</I
 
2603
></TT
 
2604
></TT
 
2605
>
 
2606
        </TD
 
2607
><TD
 
2608
><TT
 
2609
CLASS="TYPE"
 
2610
>timestamp without time zone</TT
 
2611
></TD
 
2612
><TD
 
2613
>Convert given time stamp <SPAN
 
2614
CLASS="emphasis"
 
2615
><I
 
2616
CLASS="EMPHASIS"
 
2617
>with time zone</I
 
2618
></SPAN
 
2619
> to the new time
 
2620
        zone, with no time zone designation</TD
 
2621
></TR
 
2622
><TR
 
2623
><TD
 
2624
>         <TT
 
2625
CLASS="LITERAL"
 
2626
><TT
 
2627
CLASS="TYPE"
 
2628
>time with time zone</TT
 
2629
> AT TIME ZONE <TT
 
2630
CLASS="REPLACEABLE"
 
2631
><I
 
2632
>zone</I
 
2633
></TT
 
2634
></TT
 
2635
>
 
2636
        </TD
 
2637
><TD
 
2638
><TT
 
2639
CLASS="TYPE"
 
2640
>time with time zone</TT
 
2641
></TD
 
2642
><TD
 
2643
>Convert given time <SPAN
 
2644
CLASS="emphasis"
 
2645
><I
 
2646
CLASS="EMPHASIS"
 
2647
>with time zone</I
 
2648
></SPAN
 
2649
> to the new time zone</TD
 
2650
></TR
 
2651
></TBODY
 
2652
></TABLE
 
2653
></DIV
 
2654
><P
 
2655
>    In these expressions, the desired time zone <TT
 
2656
CLASS="REPLACEABLE"
 
2657
><I
 
2658
>zone</I
 
2659
></TT
 
2660
> can be
 
2661
    specified either as a text string (e.g., <TT
 
2662
CLASS="LITERAL"
 
2663
>'PST'</TT
 
2664
>)
 
2665
    or as an interval (e.g., <TT
 
2666
CLASS="LITERAL"
 
2667
>INTERVAL '-08:00'</TT
 
2668
>).
 
2669
    In the text case, a time zone name can be specified in any of the ways
 
2670
    described in <A
 
2671
HREF="datatype-datetime.html#DATATYPE-TIMEZONES"
 
2672
>Section 8.5.3</A
 
2673
>.
 
2674
   </P
 
2675
><P
 
2676
>    Examples (assuming the local time zone is <TT
 
2677
CLASS="LITERAL"
 
2678
>PST8PDT</TT
 
2679
>):
 
2680
</P><PRE
 
2681
CLASS="SCREEN"
 
2682
>SELECT TIMESTAMP '2001-02-16 20:38:40' AT TIME ZONE 'MST';
 
2683
<I
 
2684
CLASS="LINEANNOTATION"
 
2685
>Result: </I
 
2686
><SAMP
 
2687
CLASS="COMPUTEROUTPUT"
 
2688
>2001-02-16 19:38:40-08</SAMP
 
2689
>
 
2690
 
 
2691
SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'MST';
 
2692
<I
 
2693
CLASS="LINEANNOTATION"
 
2694
>Result: </I
 
2695
><SAMP
 
2696
CLASS="COMPUTEROUTPUT"
 
2697
>2001-02-16 18:38:40</SAMP
 
2698
></PRE
 
2699
><P>
 
2700
    The first example takes a time stamp without time zone and interprets it as MST time
 
2701
    (UTC-7), which is then converted to PST (UTC-8) for display.  The second example takes
 
2702
    a time stamp specified in EST (UTC-5) and converts it to local time in MST (UTC-7).
 
2703
   </P
 
2704
><P
 
2705
>    The function <TT
 
2706
CLASS="LITERAL"
 
2707
><CODE
 
2708
CLASS="FUNCTION"
 
2709
>timezone</CODE
 
2710
>(<TT
 
2711
CLASS="REPLACEABLE"
 
2712
><I
 
2713
>zone</I
 
2714
></TT
 
2715
>,
 
2716
    <TT
 
2717
CLASS="REPLACEABLE"
 
2718
><I
 
2719
>timestamp</I
 
2720
></TT
 
2721
>)</TT
 
2722
> is equivalent to the SQL-conforming construct
 
2723
    <TT
 
2724
CLASS="LITERAL"
 
2725
><TT
 
2726
CLASS="REPLACEABLE"
 
2727
><I
 
2728
>timestamp</I
 
2729
></TT
 
2730
> AT TIME ZONE
 
2731
    <TT
 
2732
CLASS="REPLACEABLE"
 
2733
><I
 
2734
>zone</I
 
2735
></TT
 
2736
></TT
 
2737
>.
 
2738
   </P
 
2739
></DIV
 
2740
><DIV
 
2741
CLASS="SECT2"
 
2742
><H2
 
2743
CLASS="SECT2"
 
2744
><A
 
2745
NAME="FUNCTIONS-DATETIME-CURRENT"
 
2746
>9.9.4. Current Date/Time</A
 
2747
></H2
 
2748
><P
 
2749
>    <SPAN
 
2750
CLASS="PRODUCTNAME"
 
2751
>PostgreSQL</SPAN
 
2752
> provides a number of functions
 
2753
    that return values related to the current date and time.  These
 
2754
    SQL-standard functions all return values based on the start time of
 
2755
    the current transaction:
 
2756
</P><PRE
 
2757
CLASS="SYNOPSIS"
 
2758
>CURRENT_DATE
 
2759
CURRENT_TIME
 
2760
CURRENT_TIMESTAMP
 
2761
CURRENT_TIME(<TT
 
2762
CLASS="REPLACEABLE"
 
2763
><I
 
2764
>precision</I
 
2765
></TT
 
2766
>)
 
2767
CURRENT_TIMESTAMP(<TT
 
2768
CLASS="REPLACEABLE"
 
2769
><I
 
2770
>precision</I
 
2771
></TT
 
2772
>)
 
2773
LOCALTIME
 
2774
LOCALTIMESTAMP
 
2775
LOCALTIME(<TT
 
2776
CLASS="REPLACEABLE"
 
2777
><I
 
2778
>precision</I
 
2779
></TT
 
2780
>)
 
2781
LOCALTIMESTAMP(<TT
 
2782
CLASS="REPLACEABLE"
 
2783
><I
 
2784
>precision</I
 
2785
></TT
 
2786
>)</PRE
 
2787
><P>
 
2788
    </P
 
2789
><P
 
2790
>     <CODE
 
2791
CLASS="FUNCTION"
 
2792
>CURRENT_TIME</CODE
 
2793
> and
 
2794
     <CODE
 
2795
CLASS="FUNCTION"
 
2796
>CURRENT_TIMESTAMP</CODE
 
2797
> deliver values with time zone;
 
2798
     <CODE
 
2799
CLASS="FUNCTION"
 
2800
>LOCALTIME</CODE
 
2801
> and
 
2802
     <CODE
 
2803
CLASS="FUNCTION"
 
2804
>LOCALTIMESTAMP</CODE
 
2805
> deliver values without time zone.
 
2806
    </P
 
2807
><P
 
2808
>     <CODE
 
2809
CLASS="FUNCTION"
 
2810
>CURRENT_TIME</CODE
 
2811
>,
 
2812
     <CODE
 
2813
CLASS="FUNCTION"
 
2814
>CURRENT_TIMESTAMP</CODE
 
2815
>,
 
2816
     <CODE
 
2817
CLASS="FUNCTION"
 
2818
>LOCALTIME</CODE
 
2819
>, and
 
2820
     <CODE
 
2821
CLASS="FUNCTION"
 
2822
>LOCALTIMESTAMP</CODE
 
2823
>
 
2824
     can optionally take
 
2825
     a precision parameter, which causes the result to be rounded
 
2826
     to that many fractional digits in the seconds field.  Without a precision parameter,
 
2827
     the result is given to the full available precision.
 
2828
    </P
 
2829
><P
 
2830
>    Some examples:
 
2831
</P><PRE
 
2832
CLASS="SCREEN"
 
2833
>SELECT CURRENT_TIME;
 
2834
<I
 
2835
CLASS="LINEANNOTATION"
 
2836
>Result: </I
 
2837
><SAMP
 
2838
CLASS="COMPUTEROUTPUT"
 
2839
>14:39:53.662522-05</SAMP
 
2840
>
 
2841
 
 
2842
SELECT CURRENT_DATE;
 
2843
<I
 
2844
CLASS="LINEANNOTATION"
 
2845
>Result: </I
 
2846
><SAMP
 
2847
CLASS="COMPUTEROUTPUT"
 
2848
>2001-12-23</SAMP
 
2849
>
 
2850
 
 
2851
SELECT CURRENT_TIMESTAMP;
 
2852
<I
 
2853
CLASS="LINEANNOTATION"
 
2854
>Result: </I
 
2855
><SAMP
 
2856
CLASS="COMPUTEROUTPUT"
 
2857
>2001-12-23 14:39:53.662522-05</SAMP
 
2858
>
 
2859
 
 
2860
SELECT CURRENT_TIMESTAMP(2);
 
2861
<I
 
2862
CLASS="LINEANNOTATION"
 
2863
>Result: </I
 
2864
><SAMP
 
2865
CLASS="COMPUTEROUTPUT"
 
2866
>2001-12-23 14:39:53.66-05</SAMP
 
2867
>
 
2868
 
 
2869
SELECT LOCALTIMESTAMP;
 
2870
<I
 
2871
CLASS="LINEANNOTATION"
 
2872
>Result: </I
 
2873
><SAMP
 
2874
CLASS="COMPUTEROUTPUT"
 
2875
>2001-12-23 14:39:53.662522</SAMP
 
2876
></PRE
 
2877
><P>
 
2878
   </P
 
2879
><P
 
2880
>    Since these functions return
 
2881
    the start time of the current transaction, their values do not
 
2882
    change during the transaction. This is considered a feature:
 
2883
    the intent is to allow a single transaction to have a consistent
 
2884
    notion of the <SPAN
 
2885
CLASS="QUOTE"
 
2886
>"current"</SPAN
 
2887
> time, so that multiple
 
2888
    modifications within the same transaction bear the same
 
2889
    time stamp.
 
2890
   </P
 
2891
><DIV
 
2892
CLASS="NOTE"
 
2893
><BLOCKQUOTE
 
2894
CLASS="NOTE"
 
2895
><P
 
2896
><B
 
2897
>Note: </B
 
2898
>     Other database systems might advance these values more
 
2899
     frequently.
 
2900
    </P
 
2901
></BLOCKQUOTE
 
2902
></DIV
 
2903
><P
 
2904
>    <SPAN
 
2905
CLASS="PRODUCTNAME"
 
2906
>PostgreSQL</SPAN
 
2907
> also provides functions that
 
2908
    return the start time of the current statement, as well as the actual
 
2909
    current time at the instant the function is called.  The complete list
 
2910
    of non-SQL-standard time functions is:
 
2911
</P><PRE
 
2912
CLASS="SYNOPSIS"
 
2913
>transaction_timestamp()
 
2914
statement_timestamp()
 
2915
clock_timestamp()
 
2916
timeofday()
 
2917
now()</PRE
 
2918
><P>
 
2919
   </P
 
2920
><P
 
2921
>    <CODE
 
2922
CLASS="FUNCTION"
 
2923
>transaction_timestamp()</CODE
 
2924
> is equivalent to
 
2925
    <CODE
 
2926
CLASS="FUNCTION"
 
2927
>CURRENT_TIMESTAMP</CODE
 
2928
>, but is named to clearly reflect
 
2929
    what it returns.
 
2930
    <CODE
 
2931
CLASS="FUNCTION"
 
2932
>statement_timestamp()</CODE
 
2933
> returns the start time of the current
 
2934
    statement (more specifically, the time of receipt of the latest command
 
2935
    message from the client).
 
2936
    <CODE
 
2937
CLASS="FUNCTION"
 
2938
>statement_timestamp()</CODE
 
2939
> and <CODE
 
2940
CLASS="FUNCTION"
 
2941
>transaction_timestamp()</CODE
 
2942
>
 
2943
    return the same value during the first command of a transaction, but might
 
2944
    differ during subsequent commands.
 
2945
    <CODE
 
2946
CLASS="FUNCTION"
 
2947
>clock_timestamp()</CODE
 
2948
> returns the actual current time, and
 
2949
    therefore its value changes even within a single SQL command.
 
2950
    <CODE
 
2951
CLASS="FUNCTION"
 
2952
>timeofday()</CODE
 
2953
> is a historical
 
2954
    <SPAN
 
2955
CLASS="PRODUCTNAME"
 
2956
>PostgreSQL</SPAN
 
2957
> function.  Like
 
2958
    <CODE
 
2959
CLASS="FUNCTION"
 
2960
>clock_timestamp()</CODE
 
2961
>, it returns the actual current time,
 
2962
    but as a formatted <TT
 
2963
CLASS="TYPE"
 
2964
>text</TT
 
2965
> string rather than a <TT
 
2966
CLASS="TYPE"
 
2967
>timestamp
 
2968
    with time zone</TT
 
2969
> value.
 
2970
    <CODE
 
2971
CLASS="FUNCTION"
 
2972
>now()</CODE
 
2973
> is a traditional <SPAN
 
2974
CLASS="PRODUCTNAME"
 
2975
>PostgreSQL</SPAN
 
2976
>
 
2977
    equivalent to <CODE
 
2978
CLASS="FUNCTION"
 
2979
>transaction_timestamp()</CODE
 
2980
>.
 
2981
   </P
 
2982
><P
 
2983
>    All the date/time data types also accept the special literal value
 
2984
    <TT
 
2985
CLASS="LITERAL"
 
2986
>now</TT
 
2987
> to specify the current date and time (again,
 
2988
    interpreted as the transaction start time).  Thus,
 
2989
    the following three all return the same result:
 
2990
</P><PRE
 
2991
CLASS="PROGRAMLISTING"
 
2992
>SELECT CURRENT_TIMESTAMP;
 
2993
SELECT now();
 
2994
SELECT TIMESTAMP 'now';  -- incorrect for use with DEFAULT</PRE
 
2995
><P>
 
2996
   </P
 
2997
><DIV
 
2998
CLASS="TIP"
 
2999
><BLOCKQUOTE
 
3000
CLASS="TIP"
 
3001
><P
 
3002
><B
 
3003
>Tip: </B
 
3004
>      You do not want to use the third form when specifying a <TT
 
3005
CLASS="LITERAL"
 
3006
>DEFAULT</TT
 
3007
>
 
3008
      clause while creating a table.  The system will convert <TT
 
3009
CLASS="LITERAL"
 
3010
>now</TT
 
3011
>
 
3012
      to a <TT
 
3013
CLASS="TYPE"
 
3014
>timestamp</TT
 
3015
> as soon as the constant is parsed, so that when
 
3016
      the default value is needed,
 
3017
      the time of the table creation would be used!  The first two
 
3018
      forms will not be evaluated until the default value is used,
 
3019
      because they are function calls.  Thus they will give the desired
 
3020
      behavior of defaulting to the time of row insertion.
 
3021
     </P
 
3022
></BLOCKQUOTE
 
3023
></DIV
 
3024
></DIV
 
3025
><DIV
 
3026
CLASS="SECT2"
 
3027
><H2
 
3028
CLASS="SECT2"
 
3029
><A
 
3030
NAME="FUNCTIONS-DATETIME-DELAY"
 
3031
>9.9.5. Delaying Execution</A
 
3032
></H2
 
3033
><P
 
3034
>    The following function is available to delay execution of the server
 
3035
    process:
 
3036
</P><PRE
 
3037
CLASS="SYNOPSIS"
 
3038
>pg_sleep(<TT
 
3039
CLASS="REPLACEABLE"
 
3040
><I
 
3041
>seconds</I
 
3042
></TT
 
3043
>)</PRE
 
3044
><P>
 
3045
 
 
3046
    <CODE
 
3047
CLASS="FUNCTION"
 
3048
>pg_sleep</CODE
 
3049
> makes the current session's process
 
3050
    sleep until <TT
 
3051
CLASS="REPLACEABLE"
 
3052
><I
 
3053
>seconds</I
 
3054
></TT
 
3055
> seconds have
 
3056
    elapsed.  <TT
 
3057
CLASS="REPLACEABLE"
 
3058
><I
 
3059
>seconds</I
 
3060
></TT
 
3061
> is a value of type
 
3062
    <TT
 
3063
CLASS="TYPE"
 
3064
>double precision</TT
 
3065
>, so fractional-second delays can be specified.
 
3066
    For example:
 
3067
 
 
3068
</P><PRE
 
3069
CLASS="PROGRAMLISTING"
 
3070
>SELECT pg_sleep(1.5);</PRE
 
3071
><P>
 
3072
   </P
 
3073
><DIV
 
3074
CLASS="NOTE"
 
3075
><BLOCKQUOTE
 
3076
CLASS="NOTE"
 
3077
><P
 
3078
><B
 
3079
>Note: </B
 
3080
>      The effective resolution of the sleep interval is platform-specific;
 
3081
      0.01 seconds is a common value.  The sleep delay will be at least as long
 
3082
      as specified. It might be longer depending on factors such as server load.
 
3083
     </P
 
3084
></BLOCKQUOTE
 
3085
></DIV
 
3086
><DIV
 
3087
CLASS="WARNING"
 
3088
><P
 
3089
></P
 
3090
><TABLE
 
3091
CLASS="WARNING"
 
3092
BORDER="1"
 
3093
WIDTH="100%"
 
3094
><TR
 
3095
><TD
 
3096
ALIGN="CENTER"
 
3097
><B
 
3098
>Warning</B
 
3099
></TD
 
3100
></TR
 
3101
><TR
 
3102
><TD
 
3103
ALIGN="LEFT"
 
3104
><P
 
3105
>      Make sure that your session does not hold more locks than necessary
 
3106
      when calling <CODE
 
3107
CLASS="FUNCTION"
 
3108
>pg_sleep</CODE
 
3109
>.  Otherwise other sessions
 
3110
      might have to wait for your sleeping process, slowing down the entire
 
3111
      system.
 
3112
     </P
 
3113
></TD
 
3114
></TR
 
3115
></TABLE
 
3116
></DIV
 
3117
></DIV
 
3118
></DIV
 
3119
><H3
 
3120
CLASS="FOOTNOTES"
 
3121
>Notes</H3
 
3122
><TABLE
 
3123
BORDER="0"
 
3124
CLASS="FOOTNOTES"
 
3125
WIDTH="100%"
 
3126
><TR
 
3127
><TD
 
3128
ALIGN="LEFT"
 
3129
VALIGN="TOP"
 
3130
WIDTH="5%"
 
3131
><A
 
3132
NAME="FTN.AEN13609"
 
3133
HREF="functions-datetime.html#AEN13609"
 
3134
><SPAN
 
3135
CLASS="footnote"
 
3136
>[1]</SPAN
 
3137
></A
 
3138
></TD
 
3139
><TD
 
3140
ALIGN="LEFT"
 
3141
VALIGN="TOP"
 
3142
WIDTH="95%"
 
3143
><P
 
3144
>60 if leap seconds are
 
3145
        implemented by the operating system</P
 
3146
></TD
 
3147
></TR
 
3148
></TABLE
 
3149
><DIV
 
3150
CLASS="NAVFOOTER"
 
3151
><HR
 
3152
ALIGN="LEFT"
 
3153
WIDTH="100%"><TABLE
 
3154
SUMMARY="Footer navigation table"
 
3155
WIDTH="100%"
 
3156
BORDER="0"
 
3157
CELLPADDING="0"
 
3158
CELLSPACING="0"
 
3159
><TR
 
3160
><TD
 
3161
WIDTH="33%"
 
3162
ALIGN="left"
 
3163
VALIGN="top"
 
3164
><A
 
3165
HREF="functions-formatting.html"
 
3166
ACCESSKEY="P"
 
3167
>Prev</A
 
3168
></TD
 
3169
><TD
 
3170
WIDTH="34%"
 
3171
ALIGN="center"
 
3172
VALIGN="top"
 
3173
><A
 
3174
HREF="index.html"
 
3175
ACCESSKEY="H"
 
3176
>Home</A
 
3177
></TD
 
3178
><TD
 
3179
WIDTH="33%"
 
3180
ALIGN="right"
 
3181
VALIGN="top"
 
3182
><A
 
3183
HREF="functions-enum.html"
 
3184
ACCESSKEY="N"
 
3185
>Next</A
 
3186
></TD
 
3187
></TR
 
3188
><TR
 
3189
><TD
 
3190
WIDTH="33%"
 
3191
ALIGN="left"
 
3192
VALIGN="top"
 
3193
>Data Type Formatting Functions</TD
 
3194
><TD
 
3195
WIDTH="34%"
 
3196
ALIGN="center"
 
3197
VALIGN="top"
 
3198
><A
 
3199
HREF="functions.html"
 
3200
ACCESSKEY="U"
 
3201
>Up</A
 
3202
></TD
 
3203
><TD
 
3204
WIDTH="33%"
 
3205
ALIGN="right"
 
3206
VALIGN="top"
 
3207
>Enum Support Functions</TD
 
3208
></TR
 
3209
></TABLE
 
3210
></DIV
 
3211
></BODY
 
3212
></HTML
 
3213
>
 
 
b'\\ No newline at end of file'