@@ -21,9 +21,10 @@ INSERT INTO DATE_TBL VALUES ('2000-04-03');
2121INSERT INTO DATE_TBL VALUES ('2038-04-08');
2222INSERT INTO DATE_TBL VALUES ('2039-04-09');
2323INSERT 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+ ---------------
2728 04-09-1957
2829 06-13-1957
2930 02-28-1996
@@ -39,11 +40,12 @@ SELECT f1 AS "Fifteen" FROM DATE_TBL;
3940 04-08-2038
4041 04-09-2039
4142 04-10-2040
42- (15 rows)
43+ 04-10-2040 BC
44+ (16 rows)
4345
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+ ---------------
4749 04-09-1957
4850 06-13-1957
4951 02-28-1996
@@ -53,11 +55,12 @@ SELECT f1 AS "Nine" FROM DATE_TBL WHERE f1 < '2000-01-01';
5355 02-28-1997
5456 03-01-1997
5557 03-02-1997
56- (9 rows)
58+ 04-10-2040 BC
59+ (10 rows)
5760
58- SELECT f1 AS "Three" FROM DATE_TBL
61+ SELECT f1 FROM DATE_TBL
5962 WHERE f1 BETWEEN '2000-01-01' AND '2001-01-01';
60- Three
63+ f1
6164------------
6265 04-01-2000
6366 04-02-2000
@@ -860,7 +863,8 @@ SELECT f1 - date '2000-01-01' AS "Days From 2K" FROM DATE_TBL;
860863 13977
861864 14343
862865 14710
863- (15 rows)
866+ -1475115
867+ (16 rows)
864868
865869SELECT f1 - date 'epoch' AS "Days From Epoch" FROM DATE_TBL;
866870 Days From Epoch
@@ -880,7 +884,8 @@ SELECT f1 - date 'epoch' AS "Days From Epoch" FROM DATE_TBL;
880884 24934
881885 25300
882886 25667
883- (15 rows)
887+ -1464158
888+ (16 rows)
884889
885890SELECT date 'yesterday' - date 'today' AS "One day";
886891 One day
@@ -920,6 +925,43 @@ SELECT date 'tomorrow' - date 'yesterday' AS "Two days";
920925
921926--
922927-- 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+
923965--
924966-- epoch
925967--
@@ -1111,6 +1153,132 @@ SELECT EXTRACT(CENTURY FROM TIMESTAMP '1970-03-20 04:30:00.00000'); -- 20
11111153 20
11121154(1 row)
11131155
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+
11141282--
11151283-- test trunc function!
11161284--
0 commit comments