~vcs-imports/mammoth-replicator/trunk

« back to all changes in this revision

Viewing changes to src/test/regress/expected/date.out

  • Committer: alvherre
  • Date: 2005-12-16 21:24:52 UTC
  • Revision ID: svn-v4:db760fc0-0f08-0410-9d63-cc6633f64896:trunk:1
Initial import of the REL8_0_3 sources from the Pgsql CVS repository.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
--
 
2
-- DATE
 
3
--
 
4
CREATE TABLE DATE_TBL (f1 date);
 
5
INSERT INTO DATE_TBL VALUES ('1957-04-09');
 
6
INSERT INTO DATE_TBL VALUES ('1957-06-13');
 
7
INSERT INTO DATE_TBL VALUES ('1996-02-28');
 
8
INSERT INTO DATE_TBL VALUES ('1996-02-29');
 
9
INSERT INTO DATE_TBL VALUES ('1996-03-01');
 
10
INSERT INTO DATE_TBL VALUES ('1996-03-02');
 
11
INSERT INTO DATE_TBL VALUES ('1997-02-28');
 
12
INSERT INTO DATE_TBL VALUES ('1997-02-29');
 
13
ERROR:  date/time field value out of range: "1997-02-29"
 
14
INSERT INTO DATE_TBL VALUES ('1997-03-01');
 
15
INSERT INTO DATE_TBL VALUES ('1997-03-02');
 
16
INSERT INTO DATE_TBL VALUES ('2000-04-01');
 
17
INSERT INTO DATE_TBL VALUES ('2000-04-02');
 
18
INSERT INTO DATE_TBL VALUES ('2000-04-03');
 
19
INSERT INTO DATE_TBL VALUES ('2038-04-08');
 
20
INSERT INTO DATE_TBL VALUES ('2039-04-09');
 
21
INSERT INTO DATE_TBL VALUES ('2040-04-10');
 
22
SELECT f1 AS "Fifteen" FROM DATE_TBL;
 
23
  Fifteen   
 
24
------------
 
25
 04-09-1957
 
26
 06-13-1957
 
27
 02-28-1996
 
28
 02-29-1996
 
29
 03-01-1996
 
30
 03-02-1996
 
31
 02-28-1997
 
32
 03-01-1997
 
33
 03-02-1997
 
34
 04-01-2000
 
35
 04-02-2000
 
36
 04-03-2000
 
37
 04-08-2038
 
38
 04-09-2039
 
39
 04-10-2040
 
40
(15 rows)
 
41
 
 
42
SELECT f1 AS "Nine" FROM DATE_TBL WHERE f1 < '2000-01-01';
 
43
    Nine    
 
44
------------
 
45
 04-09-1957
 
46
 06-13-1957
 
47
 02-28-1996
 
48
 02-29-1996
 
49
 03-01-1996
 
50
 03-02-1996
 
51
 02-28-1997
 
52
 03-01-1997
 
53
 03-02-1997
 
54
(9 rows)
 
55
 
 
56
SELECT f1 AS "Three" FROM DATE_TBL
 
57
  WHERE f1 BETWEEN '2000-01-01' AND '2001-01-01';
 
58
   Three    
 
59
------------
 
60
 04-01-2000
 
61
 04-02-2000
 
62
 04-03-2000
 
63
(3 rows)
 
64
 
 
65
--
 
66
-- Check all the documented input formats
 
67
--
 
68
SET datestyle TO iso;  -- display results in ISO
 
69
SET datestyle TO ymd;
 
70
SELECT date 'January 8, 1999';
 
71
    date    
 
72
------------
 
73
 1999-01-08
 
74
(1 row)
 
75
 
 
76
SELECT date '1999-01-08';
 
77
    date    
 
78
------------
 
79
 1999-01-08
 
80
(1 row)
 
81
 
 
82
SELECT date '1999-01-18';
 
83
    date    
 
84
------------
 
85
 1999-01-18
 
86
(1 row)
 
87
 
 
88
SELECT date '1/8/1999';
 
89
ERROR:  date/time field value out of range: "1/8/1999"
 
90
HINT:  Perhaps you need a different "datestyle" setting.
 
91
SELECT date '1/18/1999';
 
92
ERROR:  date/time field value out of range: "1/18/1999"
 
93
HINT:  Perhaps you need a different "datestyle" setting.
 
94
SELECT date '18/1/1999';
 
95
ERROR:  date/time field value out of range: "18/1/1999"
 
96
HINT:  Perhaps you need a different "datestyle" setting.
 
97
SELECT date '01/02/03';
 
98
    date    
 
99
------------
 
100
 2001-02-03
 
101
(1 row)
 
102
 
 
103
SELECT date '19990108';
 
104
    date    
 
105
------------
 
106
 1999-01-08
 
107
(1 row)
 
108
 
 
109
SELECT date '990108';
 
110
    date    
 
111
------------
 
112
 1999-01-08
 
113
(1 row)
 
114
 
 
115
SELECT date '1999.008';
 
116
    date    
 
117
------------
 
118
 1999-01-08
 
119
(1 row)
 
120
 
 
121
SELECT date 'J2451187';
 
122
    date    
 
123
------------
 
124
 1999-01-08
 
125
(1 row)
 
126
 
 
127
SELECT date 'January 8, 99 BC';
 
128
ERROR:  date/time field value out of range: "January 8, 99 BC"
 
129
HINT:  Perhaps you need a different "datestyle" setting.
 
130
SELECT date '99-Jan-08';
 
131
    date    
 
132
------------
 
133
 1999-01-08
 
134
(1 row)
 
135
 
 
136
SELECT date '1999-Jan-08';
 
137
    date    
 
138
------------
 
139
 1999-01-08
 
140
(1 row)
 
141
 
 
142
SELECT date '08-Jan-99';
 
143
ERROR:  date/time field value out of range: "08-Jan-99"
 
144
HINT:  Perhaps you need a different "datestyle" setting.
 
145
SELECT date '08-Jan-1999';
 
146
    date    
 
147
------------
 
148
 1999-01-08
 
149
(1 row)
 
150
 
 
151
SELECT date 'Jan-08-99';
 
152
ERROR:  date/time field value out of range: "Jan-08-99"
 
153
HINT:  Perhaps you need a different "datestyle" setting.
 
154
SELECT date 'Jan-08-1999';
 
155
    date    
 
156
------------
 
157
 1999-01-08
 
158
(1 row)
 
159
 
 
160
SELECT date '99-08-Jan';
 
161
ERROR:  invalid input syntax for type date: "99-08-Jan"
 
162
SELECT date '1999-08-Jan';
 
163
ERROR:  invalid input syntax for type date: "1999-08-Jan"
 
164
SELECT date '99 Jan 08';
 
165
    date    
 
166
------------
 
167
 1999-01-08
 
168
(1 row)
 
169
 
 
170
SELECT date '1999 Jan 08';
 
171
    date    
 
172
------------
 
173
 1999-01-08
 
174
(1 row)
 
175
 
 
176
SELECT date '08 Jan 99';
 
177
ERROR:  date/time field value out of range: "08 Jan 99"
 
178
HINT:  Perhaps you need a different "datestyle" setting.
 
179
SELECT date '08 Jan 1999';
 
180
    date    
 
181
------------
 
182
 1999-01-08
 
183
(1 row)
 
184
 
 
185
SELECT date 'Jan 08 99';
 
186
ERROR:  date/time field value out of range: "Jan 08 99"
 
187
HINT:  Perhaps you need a different "datestyle" setting.
 
188
SELECT date 'Jan 08 1999';
 
189
    date    
 
190
------------
 
191
 1999-01-08
 
192
(1 row)
 
193
 
 
194
SELECT date '99 08 Jan';
 
195
    date    
 
196
------------
 
197
 1999-01-08
 
198
(1 row)
 
199
 
 
200
SELECT date '1999 08 Jan';
 
201
    date    
 
202
------------
 
203
 1999-01-08
 
204
(1 row)
 
205
 
 
206
SELECT date '99-01-08';
 
207
    date    
 
208
------------
 
209
 1999-01-08
 
210
(1 row)
 
211
 
 
212
SELECT date '1999-01-08';
 
213
    date    
 
214
------------
 
215
 1999-01-08
 
216
(1 row)
 
217
 
 
218
SELECT date '08-01-99';
 
219
ERROR:  date/time field value out of range: "08-01-99"
 
220
HINT:  Perhaps you need a different "datestyle" setting.
 
221
SELECT date '08-01-1999';
 
222
ERROR:  date/time field value out of range: "08-01-1999"
 
223
HINT:  Perhaps you need a different "datestyle" setting.
 
224
SELECT date '01-08-99';
 
225
ERROR:  date/time field value out of range: "01-08-99"
 
226
HINT:  Perhaps you need a different "datestyle" setting.
 
227
SELECT date '01-08-1999';
 
228
ERROR:  date/time field value out of range: "01-08-1999"
 
229
HINT:  Perhaps you need a different "datestyle" setting.
 
230
SELECT date '99-08-01';
 
231
    date    
 
232
------------
 
233
 1999-08-01
 
234
(1 row)
 
235
 
 
236
SELECT date '1999-08-01';
 
237
    date    
 
238
------------
 
239
 1999-08-01
 
240
(1 row)
 
241
 
 
242
SELECT date '99 01 08';
 
243
    date    
 
244
------------
 
245
 1999-01-08
 
246
(1 row)
 
247
 
 
248
SELECT date '1999 01 08';
 
249
    date    
 
250
------------
 
251
 1999-01-08
 
252
(1 row)
 
253
 
 
254
SELECT date '08 01 99';
 
255
ERROR:  date/time field value out of range: "08 01 99"
 
256
HINT:  Perhaps you need a different "datestyle" setting.
 
257
SELECT date '08 01 1999';
 
258
ERROR:  date/time field value out of range: "08 01 1999"
 
259
HINT:  Perhaps you need a different "datestyle" setting.
 
260
SELECT date '01 08 99';
 
261
ERROR:  date/time field value out of range: "01 08 99"
 
262
HINT:  Perhaps you need a different "datestyle" setting.
 
263
SELECT date '01 08 1999';
 
264
ERROR:  date/time field value out of range: "01 08 1999"
 
265
HINT:  Perhaps you need a different "datestyle" setting.
 
266
SELECT date '99 08 01';
 
267
    date    
 
268
------------
 
269
 1999-08-01
 
270
(1 row)
 
271
 
 
272
SELECT date '1999 08 01';
 
273
    date    
 
274
------------
 
275
 1999-08-01
 
276
(1 row)
 
277
 
 
278
SET datestyle TO dmy;
 
279
SELECT date 'January 8, 1999';
 
280
    date    
 
281
------------
 
282
 1999-01-08
 
283
(1 row)
 
284
 
 
285
SELECT date '1999-01-08';
 
286
    date    
 
287
------------
 
288
 1999-01-08
 
289
(1 row)
 
290
 
 
291
SELECT date '1999-01-18';
 
292
    date    
 
293
------------
 
294
 1999-01-18
 
295
(1 row)
 
296
 
 
297
SELECT date '1/8/1999';
 
298
    date    
 
299
------------
 
300
 1999-08-01
 
301
(1 row)
 
302
 
 
303
SELECT date '1/18/1999';
 
304
ERROR:  date/time field value out of range: "1/18/1999"
 
305
HINT:  Perhaps you need a different "datestyle" setting.
 
306
SELECT date '18/1/1999';
 
307
    date    
 
308
------------
 
309
 1999-01-18
 
310
(1 row)
 
311
 
 
312
SELECT date '01/02/03';
 
313
    date    
 
314
------------
 
315
 2003-02-01
 
316
(1 row)
 
317
 
 
318
SELECT date '19990108';
 
319
    date    
 
320
------------
 
321
 1999-01-08
 
322
(1 row)
 
323
 
 
324
SELECT date '990108';
 
325
    date    
 
326
------------
 
327
 1999-01-08
 
328
(1 row)
 
329
 
 
330
SELECT date '1999.008';
 
331
    date    
 
332
------------
 
333
 1999-01-08
 
334
(1 row)
 
335
 
 
336
SELECT date 'J2451187';
 
337
    date    
 
338
------------
 
339
 1999-01-08
 
340
(1 row)
 
341
 
 
342
SELECT date 'January 8, 99 BC';
 
343
     date      
 
344
---------------
 
345
 0099-01-08 BC
 
346
(1 row)
 
347
 
 
348
SELECT date '99-Jan-08';
 
349
ERROR:  date/time field value out of range: "99-Jan-08"
 
350
HINT:  Perhaps you need a different "datestyle" setting.
 
351
SELECT date '1999-Jan-08';
 
352
    date    
 
353
------------
 
354
 1999-01-08
 
355
(1 row)
 
356
 
 
357
SELECT date '08-Jan-99';
 
358
    date    
 
359
------------
 
360
 1999-01-08
 
361
(1 row)
 
362
 
 
363
SELECT date '08-Jan-1999';
 
364
    date    
 
365
------------
 
366
 1999-01-08
 
367
(1 row)
 
368
 
 
369
SELECT date 'Jan-08-99';
 
370
    date    
 
371
------------
 
372
 1999-01-08
 
373
(1 row)
 
374
 
 
375
SELECT date 'Jan-08-1999';
 
376
    date    
 
377
------------
 
378
 1999-01-08
 
379
(1 row)
 
380
 
 
381
SELECT date '99-08-Jan';
 
382
ERROR:  invalid input syntax for type date: "99-08-Jan"
 
383
SELECT date '1999-08-Jan';
 
384
ERROR:  invalid input syntax for type date: "1999-08-Jan"
 
385
SELECT date '99 Jan 08';
 
386
ERROR:  date/time field value out of range: "99 Jan 08"
 
387
HINT:  Perhaps you need a different "datestyle" setting.
 
388
SELECT date '1999 Jan 08';
 
389
    date    
 
390
------------
 
391
 1999-01-08
 
392
(1 row)
 
393
 
 
394
SELECT date '08 Jan 99';
 
395
    date    
 
396
------------
 
397
 1999-01-08
 
398
(1 row)
 
399
 
 
400
SELECT date '08 Jan 1999';
 
401
    date    
 
402
------------
 
403
 1999-01-08
 
404
(1 row)
 
405
 
 
406
SELECT date 'Jan 08 99';
 
407
    date    
 
408
------------
 
409
 1999-01-08
 
410
(1 row)
 
411
 
 
412
SELECT date 'Jan 08 1999';
 
413
    date    
 
414
------------
 
415
 1999-01-08
 
416
(1 row)
 
417
 
 
418
SELECT date '99 08 Jan';
 
419
ERROR:  invalid input syntax for type date: "99 08 Jan"
 
420
SELECT date '1999 08 Jan';
 
421
    date    
 
422
------------
 
423
 1999-01-08
 
424
(1 row)
 
425
 
 
426
SELECT date '99-01-08';
 
427
ERROR:  date/time field value out of range: "99-01-08"
 
428
HINT:  Perhaps you need a different "datestyle" setting.
 
429
SELECT date '1999-01-08';
 
430
    date    
 
431
------------
 
432
 1999-01-08
 
433
(1 row)
 
434
 
 
435
SELECT date '08-01-99';
 
436
    date    
 
437
------------
 
438
 1999-01-08
 
439
(1 row)
 
440
 
 
441
SELECT date '08-01-1999';
 
442
    date    
 
443
------------
 
444
 1999-01-08
 
445
(1 row)
 
446
 
 
447
SELECT date '01-08-99';
 
448
    date    
 
449
------------
 
450
 1999-08-01
 
451
(1 row)
 
452
 
 
453
SELECT date '01-08-1999';
 
454
    date    
 
455
------------
 
456
 1999-08-01
 
457
(1 row)
 
458
 
 
459
SELECT date '99-08-01';
 
460
ERROR:  date/time field value out of range: "99-08-01"
 
461
HINT:  Perhaps you need a different "datestyle" setting.
 
462
SELECT date '1999-08-01';
 
463
    date    
 
464
------------
 
465
 1999-08-01
 
466
(1 row)
 
467
 
 
468
SELECT date '99 01 08';
 
469
ERROR:  date/time field value out of range: "99 01 08"
 
470
HINT:  Perhaps you need a different "datestyle" setting.
 
471
SELECT date '1999 01 08';
 
472
    date    
 
473
------------
 
474
 1999-01-08
 
475
(1 row)
 
476
 
 
477
SELECT date '08 01 99';
 
478
    date    
 
479
------------
 
480
 1999-01-08
 
481
(1 row)
 
482
 
 
483
SELECT date '08 01 1999';
 
484
    date    
 
485
------------
 
486
 1999-01-08
 
487
(1 row)
 
488
 
 
489
SELECT date '01 08 99';
 
490
    date    
 
491
------------
 
492
 1999-08-01
 
493
(1 row)
 
494
 
 
495
SELECT date '01 08 1999';
 
496
    date    
 
497
------------
 
498
 1999-08-01
 
499
(1 row)
 
500
 
 
501
SELECT date '99 08 01';
 
502
ERROR:  date/time field value out of range: "99 08 01"
 
503
HINT:  Perhaps you need a different "datestyle" setting.
 
504
SELECT date '1999 08 01';
 
505
    date    
 
506
------------
 
507
 1999-08-01
 
508
(1 row)
 
509
 
 
510
SET datestyle TO mdy;
 
511
SELECT date 'January 8, 1999';
 
512
    date    
 
513
------------
 
514
 1999-01-08
 
515
(1 row)
 
516
 
 
517
SELECT date '1999-01-08';
 
518
    date    
 
519
------------
 
520
 1999-01-08
 
521
(1 row)
 
522
 
 
523
SELECT date '1999-01-18';
 
524
    date    
 
525
------------
 
526
 1999-01-18
 
527
(1 row)
 
528
 
 
529
SELECT date '1/8/1999';
 
530
    date    
 
531
------------
 
532
 1999-01-08
 
533
(1 row)
 
534
 
 
535
SELECT date '1/18/1999';
 
536
    date    
 
537
------------
 
538
 1999-01-18
 
539
(1 row)
 
540
 
 
541
SELECT date '18/1/1999';
 
542
ERROR:  date/time field value out of range: "18/1/1999"
 
543
HINT:  Perhaps you need a different "datestyle" setting.
 
544
SELECT date '01/02/03';
 
545
    date    
 
546
------------
 
547
 2003-01-02
 
548
(1 row)
 
549
 
 
550
SELECT date '19990108';
 
551
    date    
 
552
------------
 
553
 1999-01-08
 
554
(1 row)
 
555
 
 
556
SELECT date '990108';
 
557
    date    
 
558
------------
 
559
 1999-01-08
 
560
(1 row)
 
561
 
 
562
SELECT date '1999.008';
 
563
    date    
 
564
------------
 
565
 1999-01-08
 
566
(1 row)
 
567
 
 
568
SELECT date 'J2451187';
 
569
    date    
 
570
------------
 
571
 1999-01-08
 
572
(1 row)
 
573
 
 
574
SELECT date 'January 8, 99 BC';
 
575
     date      
 
576
---------------
 
577
 0099-01-08 BC
 
578
(1 row)
 
579
 
 
580
SELECT date '99-Jan-08';
 
581
ERROR:  date/time field value out of range: "99-Jan-08"
 
582
HINT:  Perhaps you need a different "datestyle" setting.
 
583
SELECT date '1999-Jan-08';
 
584
    date    
 
585
------------
 
586
 1999-01-08
 
587
(1 row)
 
588
 
 
589
SELECT date '08-Jan-99';
 
590
    date    
 
591
------------
 
592
 1999-01-08
 
593
(1 row)
 
594
 
 
595
SELECT date '08-Jan-1999';
 
596
    date    
 
597
------------
 
598
 1999-01-08
 
599
(1 row)
 
600
 
 
601
SELECT date 'Jan-08-99';
 
602
    date    
 
603
------------
 
604
 1999-01-08
 
605
(1 row)
 
606
 
 
607
SELECT date 'Jan-08-1999';
 
608
    date    
 
609
------------
 
610
 1999-01-08
 
611
(1 row)
 
612
 
 
613
SELECT date '99-08-Jan';
 
614
ERROR:  invalid input syntax for type date: "99-08-Jan"
 
615
SELECT date '1999-08-Jan';
 
616
ERROR:  invalid input syntax for type date: "1999-08-Jan"
 
617
SELECT date '99 Jan 08';
 
618
ERROR:  invalid input syntax for type date: "99 Jan 08"
 
619
SELECT date '1999 Jan 08';
 
620
    date    
 
621
------------
 
622
 1999-01-08
 
623
(1 row)
 
624
 
 
625
SELECT date '08 Jan 99';
 
626
    date    
 
627
------------
 
628
 1999-01-08
 
629
(1 row)
 
630
 
 
631
SELECT date '08 Jan 1999';
 
632
    date    
 
633
------------
 
634
 1999-01-08
 
635
(1 row)
 
636
 
 
637
SELECT date 'Jan 08 99';
 
638
    date    
 
639
------------
 
640
 1999-01-08
 
641
(1 row)
 
642
 
 
643
SELECT date 'Jan 08 1999';
 
644
    date    
 
645
------------
 
646
 1999-01-08
 
647
(1 row)
 
648
 
 
649
SELECT date '99 08 Jan';
 
650
ERROR:  invalid input syntax for type date: "99 08 Jan"
 
651
SELECT date '1999 08 Jan';
 
652
    date    
 
653
------------
 
654
 1999-01-08
 
655
(1 row)
 
656
 
 
657
SELECT date '99-01-08';
 
658
ERROR:  date/time field value out of range: "99-01-08"
 
659
HINT:  Perhaps you need a different "datestyle" setting.
 
660
SELECT date '1999-01-08';
 
661
    date    
 
662
------------
 
663
 1999-01-08
 
664
(1 row)
 
665
 
 
666
SELECT date '08-01-99';
 
667
    date    
 
668
------------
 
669
 1999-08-01
 
670
(1 row)
 
671
 
 
672
SELECT date '08-01-1999';
 
673
    date    
 
674
------------
 
675
 1999-08-01
 
676
(1 row)
 
677
 
 
678
SELECT date '01-08-99';
 
679
    date    
 
680
------------
 
681
 1999-01-08
 
682
(1 row)
 
683
 
 
684
SELECT date '01-08-1999';
 
685
    date    
 
686
------------
 
687
 1999-01-08
 
688
(1 row)
 
689
 
 
690
SELECT date '99-08-01';
 
691
ERROR:  date/time field value out of range: "99-08-01"
 
692
HINT:  Perhaps you need a different "datestyle" setting.
 
693
SELECT date '1999-08-01';
 
694
    date    
 
695
------------
 
696
 1999-08-01
 
697
(1 row)
 
698
 
 
699
SELECT date '99 01 08';
 
700
ERROR:  date/time field value out of range: "99 01 08"
 
701
HINT:  Perhaps you need a different "datestyle" setting.
 
702
SELECT date '1999 01 08';
 
703
    date    
 
704
------------
 
705
 1999-01-08
 
706
(1 row)
 
707
 
 
708
SELECT date '08 01 99';
 
709
    date    
 
710
------------
 
711
 1999-08-01
 
712
(1 row)
 
713
 
 
714
SELECT date '08 01 1999';
 
715
    date    
 
716
------------
 
717
 1999-08-01
 
718
(1 row)
 
719
 
 
720
SELECT date '01 08 99';
 
721
    date    
 
722
------------
 
723
 1999-01-08
 
724
(1 row)
 
725
 
 
726
SELECT date '01 08 1999';
 
727
    date    
 
728
------------
 
729
 1999-01-08
 
730
(1 row)
 
731
 
 
732
SELECT date '99 08 01';
 
733
ERROR:  date/time field value out of range: "99 08 01"
 
734
HINT:  Perhaps you need a different "datestyle" setting.
 
735
SELECT date '1999 08 01';
 
736
    date    
 
737
------------
 
738
 1999-08-01
 
739
(1 row)
 
740
 
 
741
RESET datestyle;
 
742
--
 
743
-- Simple math
 
744
-- Leave most of it for the horology tests
 
745
--
 
746
SELECT f1 - date '2000-01-01' AS "Days From 2K" FROM DATE_TBL;
 
747
 Days From 2K 
 
748
--------------
 
749
       -15607
 
750
       -15542
 
751
        -1403
 
752
        -1402
 
753
        -1401
 
754
        -1400
 
755
        -1037
 
756
        -1036
 
757
        -1035
 
758
           91
 
759
           92
 
760
           93
 
761
        13977
 
762
        14343
 
763
        14710
 
764
(15 rows)
 
765
 
 
766
SELECT f1 - date 'epoch' AS "Days From Epoch" FROM DATE_TBL;
 
767
 Days From Epoch 
 
768
-----------------
 
769
           -4650
 
770
           -4585
 
771
            9554
 
772
            9555
 
773
            9556
 
774
            9557
 
775
            9920
 
776
            9921
 
777
            9922
 
778
           11048
 
779
           11049
 
780
           11050
 
781
           24934
 
782
           25300
 
783
           25667
 
784
(15 rows)
 
785
 
 
786
SELECT date 'yesterday' - date 'today' AS "One day";
 
787
 One day 
 
788
---------
 
789
      -1
 
790
(1 row)
 
791
 
 
792
SELECT date 'today' - date 'tomorrow' AS "One day";
 
793
 One day 
 
794
---------
 
795
      -1
 
796
(1 row)
 
797
 
 
798
SELECT date 'yesterday' - date 'tomorrow' AS "Two days";
 
799
 Two days 
 
800
----------
 
801
       -2
 
802
(1 row)
 
803
 
 
804
SELECT date 'tomorrow' - date 'today' AS "One day";
 
805
 One day 
 
806
---------
 
807
       1
 
808
(1 row)
 
809
 
 
810
SELECT date 'today' - date 'yesterday' AS "One day";
 
811
 One day 
 
812
---------
 
813
       1
 
814
(1 row)
 
815
 
 
816
SELECT date 'tomorrow' - date 'yesterday' AS "Two days";
 
817
 Two days 
 
818
----------
 
819
        2
 
820
(1 row)
 
821
 
 
822
--
 
823
-- test extract!
 
824
--
 
825
-- century
 
826
--
 
827
SELECT EXTRACT(CENTURY FROM DATE '0101-12-31 BC'); -- -2
 
828
 date_part 
 
829
-----------
 
830
        -2
 
831
(1 row)
 
832
 
 
833
SELECT EXTRACT(CENTURY FROM DATE '0100-12-31 BC'); -- -1
 
834
 date_part 
 
835
-----------
 
836
        -1
 
837
(1 row)
 
838
 
 
839
SELECT EXTRACT(CENTURY FROM DATE '0001-12-31 BC'); -- -1
 
840
 date_part 
 
841
-----------
 
842
        -1
 
843
(1 row)
 
844
 
 
845
SELECT EXTRACT(CENTURY FROM DATE '0001-01-01');    --  1
 
846
 date_part 
 
847
-----------
 
848
         1
 
849
(1 row)
 
850
 
 
851
SELECT EXTRACT(CENTURY FROM DATE '0001-01-01 AD'); --  1
 
852
 date_part 
 
853
-----------
 
854
         1
 
855
(1 row)
 
856
 
 
857
SELECT EXTRACT(CENTURY FROM DATE '1900-12-31');    -- 19
 
858
 date_part 
 
859
-----------
 
860
        19
 
861
(1 row)
 
862
 
 
863
SELECT EXTRACT(CENTURY FROM DATE '1901-01-01');    -- 20
 
864
 date_part 
 
865
-----------
 
866
        20
 
867
(1 row)
 
868
 
 
869
SELECT EXTRACT(CENTURY FROM DATE '2000-12-31');    -- 20
 
870
 date_part 
 
871
-----------
 
872
        20
 
873
(1 row)
 
874
 
 
875
SELECT EXTRACT(CENTURY FROM DATE '2001-01-01');    -- 21
 
876
 date_part 
 
877
-----------
 
878
        21
 
879
(1 row)
 
880
 
 
881
SELECT EXTRACT(CENTURY FROM CURRENT_DATE)>=21 AS True;     -- true
 
882
 true 
 
883
------
 
884
 t
 
885
(1 row)
 
886
 
 
887
--
 
888
-- millennium
 
889
--
 
890
SELECT EXTRACT(MILLENNIUM FROM DATE '0001-12-31 BC'); -- -1
 
891
 date_part 
 
892
-----------
 
893
        -1
 
894
(1 row)
 
895
 
 
896
SELECT EXTRACT(MILLENNIUM FROM DATE '0001-01-01 AD'); --  1
 
897
 date_part 
 
898
-----------
 
899
         1
 
900
(1 row)
 
901
 
 
902
SELECT EXTRACT(MILLENNIUM FROM DATE '1000-12-31');    --  1
 
903
 date_part 
 
904
-----------
 
905
         1
 
906
(1 row)
 
907
 
 
908
SELECT EXTRACT(MILLENNIUM FROM DATE '1001-01-01');    --  2
 
909
 date_part 
 
910
-----------
 
911
         2
 
912
(1 row)
 
913
 
 
914
SELECT EXTRACT(MILLENNIUM FROM DATE '2000-12-31');    --  2
 
915
 date_part 
 
916
-----------
 
917
         2
 
918
(1 row)
 
919
 
 
920
SELECT EXTRACT(MILLENNIUM FROM DATE '2001-01-01');    --  3
 
921
 date_part 
 
922
-----------
 
923
         3
 
924
(1 row)
 
925
 
 
926
-- next test to be fixed on the turn of the next millennium;-)
 
927
SELECT EXTRACT(MILLENNIUM FROM CURRENT_DATE);         --  3
 
928
 date_part 
 
929
-----------
 
930
         3
 
931
(1 row)
 
932
 
 
933
--
 
934
-- decade
 
935
--
 
936
SELECT EXTRACT(DECADE FROM DATE '1994-12-25');    -- 199
 
937
 date_part 
 
938
-----------
 
939
       199
 
940
(1 row)
 
941
 
 
942
SELECT EXTRACT(DECADE FROM DATE '0010-01-01');    --   1
 
943
 date_part 
 
944
-----------
 
945
         1
 
946
(1 row)
 
947
 
 
948
SELECT EXTRACT(DECADE FROM DATE '0009-12-31');    --   0
 
949
 date_part 
 
950
-----------
 
951
         0
 
952
(1 row)
 
953
 
 
954
SELECT EXTRACT(DECADE FROM DATE '0001-01-01 BC'); --   0
 
955
 date_part 
 
956
-----------
 
957
         0
 
958
(1 row)
 
959
 
 
960
SELECT EXTRACT(DECADE FROM DATE '0002-12-31 BC'); --  -1
 
961
 date_part 
 
962
-----------
 
963
        -1
 
964
(1 row)
 
965
 
 
966
SELECT EXTRACT(DECADE FROM DATE '0011-01-01 BC'); --  -1
 
967
 date_part 
 
968
-----------
 
969
        -1
 
970
(1 row)
 
971
 
 
972
SELECT EXTRACT(DECADE FROM DATE '0012-12-31 BC'); --  -2
 
973
 date_part 
 
974
-----------
 
975
        -2
 
976
(1 row)
 
977
 
 
978
--
 
979
-- some other types:
 
980
--
 
981
-- on a timestamp.
 
982
SELECT EXTRACT(CENTURY FROM NOW())>=21 AS True;       -- true
 
983
 true 
 
984
------
 
985
 t
 
986
(1 row)
 
987
 
 
988
SELECT EXTRACT(CENTURY FROM TIMESTAMP '1970-03-20 04:30:00.00000'); -- 20
 
989
 date_part 
 
990
-----------
 
991
        20
 
992
(1 row)
 
993
 
 
994
-- on an interval
 
995
SELECT EXTRACT(CENTURY FROM INTERVAL '100 y');  -- 1
 
996
 date_part 
 
997
-----------
 
998
         1
 
999
(1 row)
 
1000
 
 
1001
SELECT EXTRACT(CENTURY FROM INTERVAL '99 y');   -- 0
 
1002
 date_part 
 
1003
-----------
 
1004
         0
 
1005
(1 row)
 
1006
 
 
1007
SELECT EXTRACT(CENTURY FROM INTERVAL '-99 y');  -- 0
 
1008
 date_part 
 
1009
-----------
 
1010
         0
 
1011
(1 row)
 
1012
 
 
1013
SELECT EXTRACT(CENTURY FROM INTERVAL '-100 y'); -- -1
 
1014
 date_part 
 
1015
-----------
 
1016
        -1
 
1017
(1 row)
 
1018
 
 
1019
--
 
1020
-- test trunc function!
 
1021
--
 
1022
SELECT DATE_TRUNC('MILLENNIUM', TIMESTAMP '1970-03-20 04:30:00.00000'); -- 1001
 
1023
        date_trunc        
 
1024
--------------------------
 
1025
 Thu Jan 01 00:00:00 1001
 
1026
(1 row)
 
1027
 
 
1028
SELECT DATE_TRUNC('MILLENNIUM', DATE '1970-03-20'); -- 1001-01-01
 
1029
          date_trunc          
 
1030
------------------------------
 
1031
 Thu Jan 01 00:00:00 1001 PST
 
1032
(1 row)
 
1033
 
 
1034
SELECT DATE_TRUNC('CENTURY', TIMESTAMP '1970-03-20 04:30:00.00000'); -- 1901
 
1035
        date_trunc        
 
1036
--------------------------
 
1037
 Tue Jan 01 00:00:00 1901
 
1038
(1 row)
 
1039
 
 
1040
SELECT DATE_TRUNC('CENTURY', DATE '1970-03-20'); -- 1901
 
1041
          date_trunc          
 
1042
------------------------------
 
1043
 Tue Jan 01 00:00:00 1901 PST
 
1044
(1 row)
 
1045
 
 
1046
SELECT DATE_TRUNC('CENTURY', DATE '2004-08-10'); -- 2001-01-01
 
1047
          date_trunc          
 
1048
------------------------------
 
1049
 Mon Jan 01 00:00:00 2001 PST
 
1050
(1 row)
 
1051
 
 
1052
SELECT DATE_TRUNC('CENTURY', DATE '0002-02-04'); -- 0001-01-01
 
1053
          date_trunc          
 
1054
------------------------------
 
1055
 Mon Jan 01 00:00:00 0001 PST
 
1056
(1 row)
 
1057
 
 
1058
SELECT DATE_TRUNC('CENTURY', DATE '0055-08-10 BC'); -- 0100-01-01 BC
 
1059
           date_trunc            
 
1060
---------------------------------
 
1061
 Tue Jan 01 00:00:00 0100 PST BC
 
1062
(1 row)
 
1063
 
 
1064
SELECT DATE_TRUNC('DECADE', DATE '1993-12-25'); -- 1990-01-01
 
1065
          date_trunc          
 
1066
------------------------------
 
1067
 Mon Jan 01 00:00:00 1990 PST
 
1068
(1 row)
 
1069
 
 
1070
SELECT DATE_TRUNC('DECADE', DATE '0004-12-25'); -- 0001-01-01 BC
 
1071
           date_trunc            
 
1072
---------------------------------
 
1073
 Sat Jan 01 00:00:00 0001 PST BC
 
1074
(1 row)
 
1075
 
 
1076
SELECT DATE_TRUNC('DECADE', DATE '0002-12-31 BC'); -- 0011-01-01 BC
 
1077
           date_trunc            
 
1078
---------------------------------
 
1079
 Mon Jan 01 00:00:00 0011 PST BC
 
1080
(1 row)
 
1081