should be it
This commit is contained in:
689
external/duckdb/test/sql/function/timestamp/test_strptime.test
vendored
Normal file
689
external/duckdb/test/sql/function/timestamp/test_strptime.test
vendored
Normal file
@@ -0,0 +1,689 @@
|
||||
# name: test/sql/function/timestamp/test_strptime.test
|
||||
# description: Test strptime function
|
||||
# group: [timestamp]
|
||||
|
||||
statement ok
|
||||
PRAGMA enable_verification
|
||||
|
||||
query I
|
||||
SELECT strptime('21 June, 2018', '%d %B, %Y')
|
||||
----
|
||||
2018-06-21 00:00:00
|
||||
|
||||
query I
|
||||
SELECT strptime('21/10/2018', '%d/%m/%Y')
|
||||
----
|
||||
2018-10-21 00:00:00
|
||||
|
||||
query I
|
||||
SELECT strptime('2018-20-10', '%Y-%d-%m')
|
||||
----
|
||||
2018-10-20 00:00:00
|
||||
|
||||
query I
|
||||
SELECT strptime('20182010', '%Y%d%m')
|
||||
----
|
||||
2018-10-20 00:00:00
|
||||
|
||||
query I
|
||||
SELECT strptime('Mon 30, June 2003, 12:03:10 AM', '%a %d, %B %Y, %I:%M:%S %p')
|
||||
----
|
||||
2003-06-30 00:03:10
|
||||
|
||||
query I
|
||||
SELECT strptime('Mon 30, June 2003, 12:03:10 PM', '%a %d, %B %Y, %I:%M:%S %p')
|
||||
----
|
||||
2003-06-30 12:03:10
|
||||
|
||||
query I
|
||||
SELECT strptime('Mon 30, December 2003, 7:3:5 PM', '%a %d, %B %Y, %I:%M:%S %p')
|
||||
----
|
||||
2003-12-30 19:03:05
|
||||
|
||||
query I
|
||||
SELECT strptime('Tuesday 30, December 2003, 7:3:5 PM', '%A %d, %B %Y, %I:%M:%S %p')
|
||||
----
|
||||
2003-12-30 19:03:05
|
||||
|
||||
query I
|
||||
SELECT strptime('Mon 30, December 30, 7:3:5 PM', '%a %d, %B %y, %I:%M:%S %p')
|
||||
----
|
||||
2030-12-30 19:03:05
|
||||
|
||||
# for strptime there is no difference between %- and %
|
||||
query I
|
||||
SELECT strptime('Mon 30, June 2003, 12:03:10 AM', '%a %-d, %B %Y, %-I:%-M:%-S %p')
|
||||
----
|
||||
2003-06-30 00:03:10
|
||||
|
||||
# lowercase also works
|
||||
query I
|
||||
SELECT strptime('mon', '%a')
|
||||
----
|
||||
1900-01-01 00:00:00
|
||||
|
||||
query I
|
||||
SELECT strptime('tuesday', '%A')
|
||||
----
|
||||
1900-01-01 00:00:00
|
||||
|
||||
query I
|
||||
SELECT strptime('jun', '%b')
|
||||
----
|
||||
1900-06-01 00:00:00
|
||||
|
||||
# First Monday of Monday weeks is Jan 1
|
||||
query I
|
||||
SELECT strptime('1', '%W')
|
||||
----
|
||||
1900-01-01 00:00:00
|
||||
|
||||
# First Sunday of Sunday weeks is Jan 7
|
||||
query I
|
||||
SELECT strptime('1', '%U')
|
||||
----
|
||||
1900-01-07 00:00:00
|
||||
|
||||
query II
|
||||
SELECT strptime('30', '%U'), strftime('1900-07-29'::DATE, '%U')
|
||||
----
|
||||
1900-07-29 00:00:00 30
|
||||
|
||||
# Default ISO year is 1900, which starts on a Monday
|
||||
query I
|
||||
SELECT strptime('1', '%V')
|
||||
----
|
||||
1900-01-01 00:00:00
|
||||
|
||||
query II
|
||||
SELECT strptime('30', '%W'), strftime('1900-07-23'::DATE, '%W')
|
||||
----
|
||||
1900-07-23 00:00:00 30
|
||||
|
||||
query II
|
||||
SELECT strptime('30', '%V'), strftime('1900-07-23'::DATE, '%V')
|
||||
----
|
||||
1900-07-23 00:00:00 30
|
||||
|
||||
# Ignored
|
||||
query I
|
||||
SELECT strptime('6', '%w')
|
||||
----
|
||||
1900-01-01 00:00:00
|
||||
|
||||
query I
|
||||
SELECT strptime('6', '%u')
|
||||
----
|
||||
1900-01-01 00:00:00
|
||||
|
||||
# Thursday after 1st Sunday
|
||||
query II
|
||||
SELECT strptime('1-4', '%U-%w'), strftime('1900-01-11'::DATE, '%U-%w')
|
||||
----
|
||||
1900-01-11 00:00:00 01-4
|
||||
|
||||
query II
|
||||
SELECT strptime('2-4', '%V-%u'), strftime('1900-01-11'::DATE, '%V-%u')
|
||||
----
|
||||
1900-01-11 00:00:00 02-4
|
||||
|
||||
# Thursday after 1st Monday
|
||||
query II
|
||||
SELECT strptime('1-4', '%W-%w'), strftime('1900-01-04'::DATE, '%W-%w')
|
||||
----
|
||||
1900-01-04 00:00:00 01-4
|
||||
|
||||
query II
|
||||
SELECT strptime('1-4', '%V-%u'), strftime('1900-01-04'::DATE, '%V-%u')
|
||||
----
|
||||
1900-01-04 00:00:00 01-4
|
||||
|
||||
# day of year
|
||||
query II
|
||||
SELECT strptime('30', '%j'), strftime('1900-01-30'::DATE, '%-j')
|
||||
----
|
||||
1900-01-30 00:00:00 30
|
||||
|
||||
query I
|
||||
select strptime('100 2024', '%j %Y');
|
||||
----
|
||||
2024-04-09 00:00:00
|
||||
|
||||
query I
|
||||
select strptime('2024 100', '%Y %j');
|
||||
----
|
||||
2024-04-09 00:00:00
|
||||
|
||||
# day of year AND month
|
||||
query I
|
||||
SELECT strptime('1992-01-30 30', '%Y-%m-%d %j')
|
||||
----
|
||||
1992-01-30 00:00:00
|
||||
|
||||
# Year-Sunday Week-Weekday
|
||||
query II
|
||||
SELECT strptime('2021-19-4', '%Y-%U-%w'), strftime('2021-05-13'::DATE, '%Y-%U-%w')
|
||||
----
|
||||
2021-05-13 00:00:00 2021-19-4
|
||||
|
||||
# Year-Monday Week-Weekday
|
||||
query II
|
||||
SELECT strptime('2021-19-4', '%Y-%W-%w'), strftime('2021-05-13'::DATE, '%Y-%U-%w')
|
||||
----
|
||||
2021-05-13 00:00:00 2021-19-4
|
||||
|
||||
# Year-ISO Week-Weekday
|
||||
query II
|
||||
SELECT strptime('2021-19-4', '%G-%V-%u'), strftime('2021-05-13'::DATE, '%G-%V-%u')
|
||||
----
|
||||
2021-05-13 00:00:00 2021-19-4
|
||||
|
||||
# Year, Sunday Week 0, Friday
|
||||
query II
|
||||
SELECT strptime('2021-0-5', '%Y-%U-%w'), strftime('2021-01-01'::DATE, '%Y-%U-%w')
|
||||
----
|
||||
2021-01-01 00:00:00 2021-00-5
|
||||
|
||||
# Year-ISO Week-Weekday
|
||||
query II
|
||||
SELECT strptime('2021-19-4', '%G-%V-%u'), strftime('2021-05-13'::DATE, '%G-%V-%u')
|
||||
----
|
||||
2021-05-13 00:00:00 2021-19-4
|
||||
|
||||
# Year-ISO, Week 1, Friday
|
||||
query II
|
||||
SELECT strptime('2021-1-5', '%G-%V-%u'), strftime('2021-01-08'::DATE, '%G-%V-%u')
|
||||
----
|
||||
2021-01-08 00:00:00 2021-01-5
|
||||
|
||||
# Year, Monday Week 0, Friday
|
||||
query II
|
||||
SELECT strptime('2021-0-5', '%Y-%W-%w'), strftime('2021-01-01'::DATE, '%Y-%W-%w')
|
||||
----
|
||||
2021-01-01 00:00:00 2021-00-5
|
||||
|
||||
# Year-Sunday Week-Weekday Mismatch should defer to the day
|
||||
query I
|
||||
SELECT strptime('2021-05-12 19-4', '%Y-%m-%d %U-%w')
|
||||
----
|
||||
2021-05-12 00:00:00
|
||||
|
||||
# Year-Monday Week-Weekday Mismatch should defer to the day
|
||||
query I
|
||||
SELECT strptime('2021-05-12 19-4', '%Y-%m-%d %W-%w')
|
||||
----
|
||||
2021-05-12 00:00:00
|
||||
|
||||
# Year-ISO Week-Weekday Mismatch should defer to the day
|
||||
query I
|
||||
SELECT strptime('2021-05-12 19-4', '%Y-%m-%d %V-%u')
|
||||
----
|
||||
2021-05-12 00:00:00
|
||||
|
||||
# Round trip Sunday weeks
|
||||
query III
|
||||
SELECT * FROM (
|
||||
SELECT dt, strftime(dt, '%Y-%U-%w') AS ft, strptime(strftime(dt, '%Y-%U-%w'), '%Y-%U-%w') AS rt
|
||||
FROM (SELECT '2021-01-01'::DATE + (INTERVAL (d) DAY) AS dt FROM range(365) tbl(d)) days
|
||||
) diffs
|
||||
WHERE rt <> dt
|
||||
----
|
||||
|
||||
# Round trip Monday weeks
|
||||
query III
|
||||
SELECT * FROM (
|
||||
SELECT dt, strftime(dt, '%Y-%W-%w') AS ft, strptime(strftime(dt, '%Y-%W-%w'), '%Y-%W-%w') AS rt
|
||||
FROM (SELECT '2021-01-01'::DATE + (INTERVAL (d) DAY) AS dt FROM range(365) tbl(d)) days
|
||||
) diffs
|
||||
WHERE rt <> dt
|
||||
----
|
||||
|
||||
# Round trip ISO weeks
|
||||
query III
|
||||
SELECT * FROM (
|
||||
SELECT dt, strftime(dt, '%G-%V-%u') AS ft, strptime(strftime(dt, '%G-%V-%u'), '%G-%V-%u') AS rt
|
||||
FROM (SELECT '2021-01-01'::DATE + (INTERVAL (d) DAY) AS dt FROM range(365) tbl(d)) days
|
||||
) diffs
|
||||
WHERE rt <> dt
|
||||
----
|
||||
|
||||
# empty specifier and string
|
||||
statement error
|
||||
SELECT strptime('', '')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime(NULL, '')
|
||||
----
|
||||
|
||||
query I
|
||||
SELECT strptime('', NULL)
|
||||
----
|
||||
NULL
|
||||
|
||||
# Spaces match multiple spaces (Issue #3418)
|
||||
query I
|
||||
SELECT strptime('Jun 30 2003 2:03:10AM', '%b %d %Y %-I:%M:%S%p');
|
||||
----
|
||||
2003-06-30 02:03:10
|
||||
|
||||
# Parse nanoseconds
|
||||
query I
|
||||
select strptime('2020-12-31 21:25:58.745232159', '%Y-%m-%d %H:%M:%S.%n');
|
||||
----
|
||||
2020-12-31 21:25:58.745232159
|
||||
|
||||
# Rounding of ns
|
||||
query I
|
||||
select strptime('2020-12-31 21:25:58.745232951', '%Y-%m-%d %H:%M:%S.%n');
|
||||
----
|
||||
2020-12-31 21:25:58.745232951
|
||||
|
||||
query I
|
||||
select strptime('2020-12-31 21:25:58.745232', '%Y-%m-%d %H:%M:%S.%f');
|
||||
----
|
||||
2020-12-31 21:25:58.745232
|
||||
|
||||
query I
|
||||
select strptime('2020-12-31 21:25:58.745232', '%Y-%m-%d %H:%M:%S.%f');
|
||||
----
|
||||
2020-12-31 21:25:58.745232
|
||||
|
||||
# UTC offset - produces TIMESTAMPTZ
|
||||
query I
|
||||
select strptime('2020-12-31 21:25:58.745232+00', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
2020-12-31 21:25:58.745232+00
|
||||
|
||||
query I
|
||||
select strptime('2020-12-31 21:25:58.745232+0000', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
2020-12-31 21:25:58.745232+00
|
||||
|
||||
query I
|
||||
select strptime('2020-12-31 21:25:58.745232+02', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
2020-12-31 19:25:58.745232+00
|
||||
|
||||
query I
|
||||
select strptime('2020-12-31 21:25:58.745232-02', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
2020-12-31 23:25:58.745232+00
|
||||
|
||||
query I
|
||||
select strptime('2020-12-31 21:25:58.745232+0215', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
2020-12-31 19:10:58.745232+00
|
||||
|
||||
query I
|
||||
select strptime('2020-12-31 21:25:58.745232-0215', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
2020-12-31 23:40:58.745232+00
|
||||
|
||||
# on the boundaries
|
||||
query I
|
||||
select strptime('2020-12-31 03:25:58.745232+04', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
2020-12-30 23:25:58.745232+00
|
||||
|
||||
query I
|
||||
select strptime('2020-12-30 23:25:58.745232-04', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
2020-12-31 03:25:58.745232+00
|
||||
|
||||
# Right side padding of fractional seconds
|
||||
query I
|
||||
select strptime('2024-11-28 23:59:00.3', '%Y-%m-%d %H:%M:%S.%g');
|
||||
----
|
||||
2024-11-28 23:59:00.3
|
||||
|
||||
query I
|
||||
select strptime('2024-11-28 23:59:00.312', '%Y-%m-%d %H:%M:%S.%f');
|
||||
----
|
||||
2024-11-28 23:59:00.312
|
||||
|
||||
query I
|
||||
select strptime('2024-11-28 23:59:00.312457', '%Y-%m-%d %H:%M:%S.%n');
|
||||
----
|
||||
2024-11-28 23:59:00.312457
|
||||
|
||||
# infinities should always parse
|
||||
|
||||
query I
|
||||
select strptime('infinity', '%m/%d/%Y');
|
||||
----
|
||||
infinity
|
||||
|
||||
query I
|
||||
select strptime('-infinity', '%m/%d/%Y');
|
||||
----
|
||||
-infinity
|
||||
|
||||
query I
|
||||
select strptime('epoch', '%m/%d/%Y');
|
||||
----
|
||||
1970-01-01 00:00:00
|
||||
|
||||
|
||||
# Don't swallow non-spaces
|
||||
query I
|
||||
SELECT strptime('Mon Oct 17 2022 22:00:00 GMT+0000 (GMT)', '%a %b %d %Y %X GMT%z (%Z)') as fixed;
|
||||
----
|
||||
2022-10-17 22:00:00+00
|
||||
|
||||
query I
|
||||
SELECT strptime('Mon Oct 17 2022 22:00:00 GMT+0000 (GMT', '%a %b %d %Y %X GMT%z (%Z') as working;
|
||||
----
|
||||
2022-10-17 22:00:00+00
|
||||
|
||||
#
|
||||
# Multiple patterns
|
||||
#
|
||||
query I
|
||||
SELECT strptime('10/28/1910', ['%d-%m-%Y', '%m-%d-%Y', '%d/%m/%Y', '%m/%d/%Y'])
|
||||
----
|
||||
1910-10-28 00:00:00
|
||||
|
||||
# Report mismatch for first pattern
|
||||
statement error
|
||||
SELECT strptime('10.28.1910', ['%d-%m-%Y', '%m-%d-%Y', '%d/%m/%Y', '%m/%d/%Y'])
|
||||
----
|
||||
Error: Literal does not match, expected /
|
||||
|
||||
statement error
|
||||
SELECT strptime('Mon Oct 17 2022 22:00:00 GMT+0000 (GMT)', '%a %b %d %Y %X GMT%z (%Z') as broken;
|
||||
----
|
||||
|
||||
# incorrect usage
|
||||
statement error
|
||||
select strptime('2020-12-31 21:25:58.745232+0', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
|
||||
statement error
|
||||
select strptime('2020-12-31 21:25:58.745232+0X', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
|
||||
statement error
|
||||
select strptime('2020-12-31 21:25:58.745232+X0', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
|
||||
statement error
|
||||
select strptime('2020-12-31 21:25:58.745232+000', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
|
||||
statement error
|
||||
select strptime('2020-12-31 21:25:58.745232X00', '%Y-%m-%d %H:%M:%S.%f%z');
|
||||
----
|
||||
|
||||
# different errors
|
||||
# month out of range
|
||||
statement error
|
||||
SELECT strptime('2018-20-10', '%Y-%m-%d')
|
||||
----
|
||||
|
||||
# day out of range
|
||||
statement error
|
||||
SELECT strptime('2018-10-100', '%Y-%m-%d')
|
||||
----
|
||||
|
||||
# year without century out of range
|
||||
statement error
|
||||
SELECT strptime('969-10-10', '%y-%m-%d')
|
||||
----
|
||||
|
||||
# literal part does not match
|
||||
statement error
|
||||
SELECT strptime('2000/10/10', '%Y-%m-%d')
|
||||
----
|
||||
|
||||
# incorrect date
|
||||
statement error
|
||||
SELECT strptime('2001-02-30', '%Y-%m-%d')
|
||||
----
|
||||
|
||||
# incorrect date
|
||||
statement error
|
||||
SELECT strptime('2000-10-hello', '%Y-%m-%d')
|
||||
----
|
||||
|
||||
# incorrect hour
|
||||
statement error
|
||||
SELECT strptime('2000-10-01 24:00:00', '%Y-%m-%d %H:%M:%S')
|
||||
----
|
||||
|
||||
# incorrect hour with 12 hour clock
|
||||
statement error
|
||||
SELECT strptime('2000-10-01 00:00:00 AM', '%Y-%m-%d %I:%M:%S %p')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('2000-10-01 13:00:00 AM', '%Y-%m-%d %I:%M:%S %p')
|
||||
----
|
||||
|
||||
# incorrect minute
|
||||
statement error
|
||||
SELECT strptime('2000-10-01 23:60:00', '%Y-%m-%d %H:%M:%S')
|
||||
----
|
||||
|
||||
# incorrect seconds
|
||||
statement error
|
||||
SELECT strptime('2000-10-01 23:59:60', '%Y-%m-%d %H:%M:%S')
|
||||
----
|
||||
|
||||
# incorrect microseconds
|
||||
statement error
|
||||
SELECT strptime('2000-10-01 23:59:59.10000000', '%Y-%m-%d %H:%M:%S.%f')
|
||||
----
|
||||
|
||||
# huge number
|
||||
statement error
|
||||
SELECT strptime('2000-10-01 23:59:59.1000000000000000000000000000', '%Y-%m-%d %H:%M:%S.%f')
|
||||
----
|
||||
|
||||
# empty string
|
||||
statement error
|
||||
SELECT strptime('', '%Y-%m-%d %H:%M:%S.%f')
|
||||
----
|
||||
|
||||
# empty string with am/pm
|
||||
statement error
|
||||
SELECT strptime('', '%p')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('a', '%p')
|
||||
----
|
||||
|
||||
# incorrect am/pm
|
||||
statement error
|
||||
SELECT strptime('mp', '%p')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('pp', '%p')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('zm', '%p')
|
||||
----
|
||||
|
||||
# incorrect abbreviated weekday name
|
||||
statement error
|
||||
SELECT strptime('moa', '%a')
|
||||
----
|
||||
|
||||
# incorrect weekday name
|
||||
statement error
|
||||
SELECT strptime('moaday', '%A')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('mondayy', '%A')
|
||||
----
|
||||
|
||||
# incorrect abbreviated month name
|
||||
statement error
|
||||
SELECT strptime('juk', '%b')
|
||||
----
|
||||
|
||||
# incorrect weekday name
|
||||
statement error
|
||||
SELECT strptime('juke', '%B')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('junee', '%B')
|
||||
----
|
||||
|
||||
# day of year out of range
|
||||
statement error
|
||||
SELECT strptime('500', '%j')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('500', '%-j')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('0', '%j')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('0', '%-j')
|
||||
----
|
||||
|
||||
# week numbers out of range
|
||||
statement error
|
||||
SELECT strptime('60', '%U')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('60', '%W')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('60', '%V')
|
||||
----
|
||||
ISO week offset out of range, expected a value between 1 and 53
|
||||
|
||||
# weekday out of range
|
||||
statement error
|
||||
SELECT strptime('9', '%w')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('9', '%u')
|
||||
----
|
||||
ISO weekday offset out of range, expected a value between 1 and 7
|
||||
|
||||
# Multiple offset types
|
||||
statement error
|
||||
SELECT strptime('20 19', '%U %W')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('20 19', '%U %V')
|
||||
----
|
||||
Incompatible ISO week offset specified
|
||||
|
||||
statement error
|
||||
SELECT strptime('20 2021', '%U %G')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('20 19', '%U %j')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('20 19', '%W %U')
|
||||
----
|
||||
Multiple week offsets specified
|
||||
|
||||
statement error
|
||||
SELECT strptime('20 19', '%W %V')
|
||||
----
|
||||
Incompatible ISO week offset specified
|
||||
|
||||
statement error
|
||||
SELECT strptime('20 2021', '%W %G')
|
||||
----
|
||||
Incompatible ISO year offset specified
|
||||
|
||||
statement error
|
||||
SELECT strptime('20 19', '%W %j')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('20 19', '%V %U')
|
||||
----
|
||||
Multiple week offsets specified
|
||||
|
||||
statement error
|
||||
SELECT strptime('20 19', '%V %W')
|
||||
----
|
||||
Multiple week offsets specified
|
||||
|
||||
statement error
|
||||
SELECT strptime('20 19', '%V %j')
|
||||
----
|
||||
Multiple year offsets specified
|
||||
|
||||
statement error
|
||||
SELECT strptime('2021 19', '%G %U')
|
||||
----
|
||||
Multiple week offsets specified
|
||||
|
||||
statement error
|
||||
SELECT strptime('2021 19', '%G %W')
|
||||
----
|
||||
Multiple week offsets specified
|
||||
|
||||
statement error
|
||||
SELECT strptime('2021 19', '%G %j')
|
||||
----
|
||||
Multiple year offsets specified
|
||||
|
||||
# Years override ISO offsets
|
||||
query I
|
||||
SELECT strptime('2021 1950', '%G %Y')
|
||||
----
|
||||
1950-01-01 00:00:00
|
||||
|
||||
query I
|
||||
SELECT strptime('2021 1950', '%Y %G')
|
||||
----
|
||||
2021-01-01 00:00:00
|
||||
|
||||
query I
|
||||
SELECT strptime('20 1950', '%V %Y')
|
||||
----
|
||||
1950-01-01 00:00:00
|
||||
|
||||
statement error
|
||||
SELECT strptime('2021 19', '%Y %V')
|
||||
----
|
||||
ISO week offsets are incompatible with non-ISO year specifiers. Use '%G' instead
|
||||
|
||||
# AM/PM out of range
|
||||
statement error
|
||||
SELECT strptime('Mon 30, December 30, 20:3:5 PM', '%a %d, %B %y, %H:%M:%S %p')
|
||||
----
|
||||
|
||||
# unrecognized specifier
|
||||
statement error
|
||||
SELECT strptime('21/10/2018', '%-q/%m/%Y')
|
||||
----
|
||||
|
||||
# microseconds out of range
|
||||
statement error
|
||||
SELECT strptime('9999999', '%f')
|
||||
----
|
||||
|
||||
# millisecond out of range
|
||||
statement error
|
||||
SELECT strptime('9999', '%g')
|
||||
----
|
||||
|
||||
statement error
|
||||
SELECT strptime('2000/10/10', random()::varchar)
|
||||
----
|
||||
Reference in New Issue
Block a user