@@ -72,39 +72,51 @@ drop table foo;
7272## test date_bin function
7373###
7474query T
75- SELECT DATE_BIN(INTERVAL '15 minutes', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-01T00:00:00Z') AS res
75+ SELECT DATE_BIN(INTERVAL '15 minutes', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-01T00:00:00Z')
76+ ----
77+ 2022-08-03T14:30:00
78+
79+ # Can coerce string interval arguments
80+ query T
81+ SELECT DATE_BIN('15 minutes', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-01T00:00:00Z')
82+ ----
83+ 2022-08-03T14:30:00
84+
85+ # Can coerce all string arguments
86+ query T
87+ SELECT DATE_BIN('15 minutes', '2022-08-03 14:38:50Z', '1970-01-01T00:00:00Z')
7688----
77892022-08-03T14:30:00
7890
7991# Shift forward by 5 minutes
8092query T
81- SELECT DATE_BIN(INTERVAL '15 minutes', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-01T00:05:00Z') AS res
93+ SELECT DATE_BIN(INTERVAL '15 minutes', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-01T00:05:00Z')
8294----
83952022-08-03T14:35:00
8496
8597
8698# Shift backward by 5 minutes
8799query T
88- SELECT DATE_BIN(INTERVAL '15 minutes', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-01T23:55:00Z') AS res
100+ SELECT DATE_BIN(INTERVAL '15 minutes', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-01T23:55:00Z')
89101----
901022022-08-03T14:25:00
91103
92104# origin after source, timestamp in previous bucket
93105query T
94- SELECT DATE_BIN(INTERVAL '15 minutes', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '2022-08-03 14:40:00Z') AS res
106+ SELECT DATE_BIN(INTERVAL '15 minutes', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '2022-08-03 14:40:00Z')
95107----
961082022-08-03T14:25:00
97109
98110# stride by 7 days
99111query T
100- SELECT DATE_BIN(INTERVAL '7 days', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-01 00:00:00Z') AS res
112+ SELECT DATE_BIN(INTERVAL '7 days', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-01 00:00:00Z')
101113----
1021142022-07-28T00:00:00
103115
104116
105117# origin shifts bins forward 1 day
106118query T
107- SELECT DATE_BIN(INTERVAL '7 days', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-02 00:00:00Z') AS res
119+ SELECT DATE_BIN(INTERVAL '7 days', TIMESTAMP '2022-08-03 14:38:50Z', TIMESTAMP '1970-01-02 00:00:00Z')
108120----
1091212022-07-29T00:00:00
110122
@@ -133,3 +145,49 @@ FROM (
133145 (TIMESTAMP '2021-06-10 17:05:00Z', TIMESTAMP '2001-01-01T00:00:00Z', 0.5),
134146 (TIMESTAMP '2021-06-10 17:19:10Z', TIMESTAMP '2001-01-01T00:00:00Z', 0.3)
135147 ) as t (time, origin, val)
148+
149+ ###
150+ ## test date_trunc function
151+ ###
152+ query T
153+ SELECT DATE_TRUNC('year', TIMESTAMP '2022-08-03 14:38:50Z');
154+ ----
155+ 2022-01-01T00:00:00
156+
157+ query T
158+ SELECT DATE_TRUNC('quarter', TIMESTAMP '2022-08-03 14:38:50Z');
159+ ----
160+ 2022-07-01T00:00:00
161+
162+ query T
163+ SELECT DATE_TRUNC('month', TIMESTAMP '2022-08-03 14:38:50Z');
164+ ----
165+ 2022-08-01T00:00:00
166+
167+ query T
168+ SELECT DATE_TRUNC('day', TIMESTAMP '2022-08-03 14:38:50Z');
169+ ----
170+ 2022-08-03T00:00:00
171+
172+ query T
173+ SELECT DATE_TRUNC('hour', TIMESTAMP '2022-08-03 14:38:50Z');
174+ ----
175+ 2022-08-03T14:00:00
176+
177+ query T
178+ SELECT DATE_TRUNC('minute', TIMESTAMP '2022-08-03 14:38:50Z');
179+ ----
180+ 2022-08-03T14:38:00
181+
182+ query T
183+ SELECT DATE_TRUNC('second', TIMESTAMP '2022-08-03 14:38:50Z');
184+ ----
185+ 2022-08-03T14:38:50
186+
187+
188+ # Demonstrate that strings are automatically coerced to timestamps (don't use TIMESTAMP)
189+
190+ query T
191+ SELECT DATE_TRUNC('second', '2022-08-03 14:38:50Z');
192+ ----
193+ 2022-08-03T14:38:50
0 commit comments