@@ -21,9 +21,10 @@ INSERT INTO DATE_TBL VALUES ('2000-04-03');
21
21
INSERT INTO DATE_TBL VALUES ('2038-04-08');
22
22
INSERT INTO DATE_TBL VALUES ('2039-04-09');
23
23
INSERT INTO DATE_TBL VALUES ('2040-04-10');
24
- SELECT f1 AS "Fifteen" FROM DATE_TBL;
25
- Fifteen
26
- ------------
24
+ INSERT INTO DATE_TBL VALUES ('2040-04-10 BC');
25
+ SELECT f1 FROM DATE_TBL;
26
+ f1
27
+ ---------------
27
28
04-09-1957
28
29
06-13-1957
29
30
02-28-1996
@@ -39,11 +40,12 @@ SELECT f1 AS "Fifteen" FROM DATE_TBL;
39
40
04-08-2038
40
41
04-09-2039
41
42
04-10-2040
42
- (15 rows)
43
+ 04-10-2040 BC
44
+ (16 rows)
43
45
44
- SELECT f1 AS "Nine" FROM DATE_TBL WHERE f1 < '2000-01-01';
45
- Nine
46
- ------------
46
+ SELECT f1 FROM DATE_TBL WHERE f1 < '2000-01-01';
47
+ f1
48
+ ---------------
47
49
04-09-1957
48
50
06-13-1957
49
51
02-28-1996
@@ -53,11 +55,12 @@ SELECT f1 AS "Nine" FROM DATE_TBL WHERE f1 < '2000-01-01';
53
55
02-28-1997
54
56
03-01-1997
55
57
03-02-1997
56
- (9 rows)
58
+ 04-10-2040 BC
59
+ (10 rows)
57
60
58
- SELECT f1 AS "Three" FROM DATE_TBL
61
+ SELECT f1 FROM DATE_TBL
59
62
WHERE f1 BETWEEN '2000-01-01' AND '2001-01-01';
60
- Three
63
+ f1
61
64
------------
62
65
04-01-2000
63
66
04-02-2000
@@ -860,7 +863,8 @@ SELECT f1 - date '2000-01-01' AS "Days From 2K" FROM DATE_TBL;
860
863
13977
861
864
14343
862
865
14710
863
- (15 rows)
866
+ -1475115
867
+ (16 rows)
864
868
865
869
SELECT f1 - date 'epoch' AS "Days From Epoch" FROM DATE_TBL;
866
870
Days From Epoch
@@ -880,7 +884,8 @@ SELECT f1 - date 'epoch' AS "Days From Epoch" FROM DATE_TBL;
880
884
24934
881
885
25300
882
886
25667
883
- (15 rows)
887
+ -1464158
888
+ (16 rows)
884
889
885
890
SELECT date 'yesterday' - date 'today' AS "One day";
886
891
One day
@@ -920,6 +925,43 @@ SELECT date 'tomorrow' - date 'yesterday' AS "Two days";
920
925
921
926
--
922
927
-- test extract!
928
+ --
929
+ SELECT f1 as "date",
930
+ date_part('year', f1) AS year,
931
+ date_part('month', f1) AS month,
932
+ date_part('day', f1) AS day,
933
+ date_part('quarter', f1) AS quarter,
934
+ date_part('decade', f1) AS decade,
935
+ date_part('century', f1) AS century,
936
+ date_part('millennium', f1) AS millennium,
937
+ date_part('isoyear', f1) AS isoyear,
938
+ date_part('week', f1) AS week,
939
+ date_part('dow', f1) AS dow,
940
+ date_part('isodow', f1) AS isodow,
941
+ date_part('doy', f1) AS doy,
942
+ date_part('julian', f1) AS julian,
943
+ date_part('epoch', f1) AS epoch
944
+ FROM date_tbl;
945
+ date | year | month | day | quarter | decade | century | millennium | isoyear | week | dow | isodow | doy | julian | epoch
946
+ ---------------+-------+-------+-----+---------+--------+---------+------------+---------+------+-----+--------+-----+---------+---------------
947
+ 04-09-1957 | 1957 | 4 | 9 | 2 | 195 | 20 | 2 | 1957 | 15 | 2 | 2 | 99 | 2435938 | -401760000
948
+ 06-13-1957 | 1957 | 6 | 13 | 2 | 195 | 20 | 2 | 1957 | 24 | 4 | 4 | 164 | 2436003 | -396144000
949
+ 02-28-1996 | 1996 | 2 | 28 | 1 | 199 | 20 | 2 | 1996 | 9 | 3 | 3 | 59 | 2450142 | 825465600
950
+ 02-29-1996 | 1996 | 2 | 29 | 1 | 199 | 20 | 2 | 1996 | 9 | 4 | 4 | 60 | 2450143 | 825552000
951
+ 03-01-1996 | 1996 | 3 | 1 | 1 | 199 | 20 | 2 | 1996 | 9 | 5 | 5 | 61 | 2450144 | 825638400
952
+ 03-02-1996 | 1996 | 3 | 2 | 1 | 199 | 20 | 2 | 1996 | 9 | 6 | 6 | 62 | 2450145 | 825724800
953
+ 02-28-1997 | 1997 | 2 | 28 | 1 | 199 | 20 | 2 | 1997 | 9 | 5 | 5 | 59 | 2450508 | 857088000
954
+ 03-01-1997 | 1997 | 3 | 1 | 1 | 199 | 20 | 2 | 1997 | 9 | 6 | 6 | 60 | 2450509 | 857174400
955
+ 03-02-1997 | 1997 | 3 | 2 | 1 | 199 | 20 | 2 | 1997 | 9 | 0 | 7 | 61 | 2450510 | 857260800
956
+ 04-01-2000 | 2000 | 4 | 1 | 2 | 200 | 20 | 2 | 2000 | 13 | 6 | 6 | 92 | 2451636 | 954547200
957
+ 04-02-2000 | 2000 | 4 | 2 | 2 | 200 | 20 | 2 | 2000 | 13 | 0 | 7 | 93 | 2451637 | 954633600
958
+ 04-03-2000 | 2000 | 4 | 3 | 2 | 200 | 20 | 2 | 2000 | 14 | 1 | 1 | 94 | 2451638 | 954720000
959
+ 04-08-2038 | 2038 | 4 | 8 | 2 | 203 | 21 | 3 | 2038 | 14 | 4 | 4 | 98 | 2465522 | 2154297600
960
+ 04-09-2039 | 2039 | 4 | 9 | 2 | 203 | 21 | 3 | 2039 | 14 | 6 | 6 | 99 | 2465888 | 2185920000
961
+ 04-10-2040 | 2040 | 4 | 10 | 2 | 204 | 21 | 3 | 2040 | 15 | 2 | 2 | 101 | 2466255 | 2217628800
962
+ 04-10-2040 BC | -2040 | 4 | 10 | 2 | -204 | -21 | -3 | -2040 | 15 | 1 | 1 | 100 | 976430 | -126503251200
963
+ (16 rows)
964
+
923
965
--
924
966
-- epoch
925
967
--
@@ -1111,6 +1153,132 @@ SELECT EXTRACT(CENTURY FROM TIMESTAMP '1970-03-20 04:30:00.00000'); -- 20
1111
1153
20
1112
1154
(1 row)
1113
1155
1156
+ --
1157
+ -- all possible fields
1158
+ --
1159
+ SELECT EXTRACT(MICROSECONDS FROM DATE '2020-08-11');
1160
+ date_part
1161
+ -----------
1162
+ 0
1163
+ (1 row)
1164
+
1165
+ SELECT EXTRACT(MILLISECONDS FROM DATE '2020-08-11');
1166
+ date_part
1167
+ -----------
1168
+ 0
1169
+ (1 row)
1170
+
1171
+ SELECT EXTRACT(SECOND FROM DATE '2020-08-11');
1172
+ date_part
1173
+ -----------
1174
+ 0
1175
+ (1 row)
1176
+
1177
+ SELECT EXTRACT(MINUTE FROM DATE '2020-08-11');
1178
+ date_part
1179
+ -----------
1180
+ 0
1181
+ (1 row)
1182
+
1183
+ SELECT EXTRACT(HOUR FROM DATE '2020-08-11');
1184
+ date_part
1185
+ -----------
1186
+ 0
1187
+ (1 row)
1188
+
1189
+ SELECT EXTRACT(DAY FROM DATE '2020-08-11');
1190
+ date_part
1191
+ -----------
1192
+ 11
1193
+ (1 row)
1194
+
1195
+ SELECT EXTRACT(MONTH FROM DATE '2020-08-11');
1196
+ date_part
1197
+ -----------
1198
+ 8
1199
+ (1 row)
1200
+
1201
+ SELECT EXTRACT(YEAR FROM DATE '2020-08-11');
1202
+ date_part
1203
+ -----------
1204
+ 2020
1205
+ (1 row)
1206
+
1207
+ SELECT EXTRACT(DECADE FROM DATE '2020-08-11');
1208
+ date_part
1209
+ -----------
1210
+ 202
1211
+ (1 row)
1212
+
1213
+ SELECT EXTRACT(CENTURY FROM DATE '2020-08-11');
1214
+ date_part
1215
+ -----------
1216
+ 21
1217
+ (1 row)
1218
+
1219
+ SELECT EXTRACT(MILLENNIUM FROM DATE '2020-08-11');
1220
+ date_part
1221
+ -----------
1222
+ 3
1223
+ (1 row)
1224
+
1225
+ SELECT EXTRACT(ISOYEAR FROM DATE '2020-08-11');
1226
+ date_part
1227
+ -----------
1228
+ 2020
1229
+ (1 row)
1230
+
1231
+ SELECT EXTRACT(QUARTER FROM DATE '2020-08-11');
1232
+ date_part
1233
+ -----------
1234
+ 3
1235
+ (1 row)
1236
+
1237
+ SELECT EXTRACT(WEEK FROM DATE '2020-08-11');
1238
+ date_part
1239
+ -----------
1240
+ 33
1241
+ (1 row)
1242
+
1243
+ SELECT EXTRACT(DOW FROM DATE '2020-08-11');
1244
+ date_part
1245
+ -----------
1246
+ 2
1247
+ (1 row)
1248
+
1249
+ SELECT EXTRACT(ISODOW FROM DATE '2020-08-11');
1250
+ date_part
1251
+ -----------
1252
+ 2
1253
+ (1 row)
1254
+
1255
+ SELECT EXTRACT(DOY FROM DATE '2020-08-11');
1256
+ date_part
1257
+ -----------
1258
+ 224
1259
+ (1 row)
1260
+
1261
+ SELECT EXTRACT(TIMEZONE FROM DATE '2020-08-11');
1262
+ ERROR: timestamp units "timezone" not supported
1263
+ CONTEXT: SQL function "date_part" statement 1
1264
+ SELECT EXTRACT(TIMEZONE_M FROM DATE '2020-08-11');
1265
+ ERROR: timestamp units "timezone_m" not supported
1266
+ CONTEXT: SQL function "date_part" statement 1
1267
+ SELECT EXTRACT(TIMEZONE_H FROM DATE '2020-08-11');
1268
+ ERROR: timestamp units "timezone_h" not supported
1269
+ CONTEXT: SQL function "date_part" statement 1
1270
+ SELECT EXTRACT(EPOCH FROM DATE '2020-08-11');
1271
+ date_part
1272
+ ------------
1273
+ 1597104000
1274
+ (1 row)
1275
+
1276
+ SELECT EXTRACT(JULIAN FROM DATE '2020-08-11');
1277
+ date_part
1278
+ -----------
1279
+ 2459073
1280
+ (1 row)
1281
+
1114
1282
--
1115
1283
-- test trunc function!
1116
1284
--
0 commit comments