Files
turso/testing/scalar-functions-datetime.test
2024-08-24 18:31:34 +07:00

126 lines
3.0 KiB
Tcl
Executable File

#!/usr/bin/env tclsh
set testdir [file dirname $argv0]
source $testdir/tester.tcl
do_execsql_test time-no-arg {
SELECT length(time()) = 8;
} {1}
do_execsql_test time-current-time {
SELECT length(time('now')) = 8;
} {1}
do_execsql_test time-specific-time {
SELECT time('04:02:00');
} {04:02:00}
do_execsql_test time-of-datetime {
SELECT time('2023-05-18 15:30:45');
} {15:30:45}
do_execsql_test time-iso8601 {
SELECT time('2023-05-18T15:30:45');
} {15:30:45}
do_execsql_test time-with-milliseconds {
SELECT time('2023-05-18 15:30:45.123');
} {15:30:45}
do_execsql_test time-julian-day-integer {
SELECT time(2460082);
} {12:00:00}
do_execsql_test time-julian-day-float {
SELECT time(2460082.2);
} {16:48:00}
do_execsql_test time-invalid-input {
SELECT time('not a time');
} {{}}
do_execsql_test time-null-input {
SELECT time(NULL);
} {{}}
do_execsql_test time-out-of-range {
SELECT time('25:05:01');
} {{}}
do_execsql_test time-date-only {
SELECT time('2024-02-02');
} {00:00:00}
do_execsql_test time-with-timezone-utc {
SELECT time('2023-05-18 15:30:45Z');
} {15:30:45}
do_execsql_test time-with-timezone-positive {
SELECT time('2023-05-18 23:30:45+07:00');
} {16:30:45}
do_execsql_test time-with-timezone-negative {
SELECT time('2023-05-19 01:30:45-05:00');
} {06:30:45}
do_execsql_test time-with-timezone-day-change-positive {
SELECT time('2023-05-18 23:30:45-03:00');
} {02:30:45}
do_execsql_test time-with-timezone-day-change-negative {
SELECT time('2023-05-19 01:30:45+03:00');
} {22:30:45}
do_execsql_test time-with-timezone-iso8601 {
SELECT time('2023-05-18T15:30:45+02:00');
} {13:30:45}
do_execsql_test time-with-timezone-and-milliseconds {
SELECT time('2023-05-18 15:30:45.123+02:00');
} {13:30:45}
do_execsql_test time-with-invalid-timezone {
SELECT time('2023-05-18 15:30:45+25:00');
} {{}}
do_execsql_test time-with-modifier-start-of-day {
SELECT time('2023-05-18 15:30:45', 'start of day');
} {00:00:00}
do_execsql_test time-with-modifier-add-hours {
SELECT time('2023-05-18 15:30:45', '+2 hours');
} {17:30:45}
do_execsql_test time-with-modifier-add-minutes {
SELECT time('2023-05-18 15:30:45', '+45 minutes');
} {16:15:45}
do_execsql_test time-with-modifier-add-seconds {
SELECT time('2023-05-18 15:30:45', '+30 seconds');
} {15:31:15}
do_execsql_test time-with-modifier-subtract-hours {
SELECT time('2023-05-18 15:30:45', '-3 hours');
} {12:30:45}
do_execsql_test time-with-modifier-subtract-minutes {
SELECT time('2023-05-18 15:30:45', '-15 minutes');
} {15:15:45}
do_execsql_test time-with-modifier-subtract-seconds {
SELECT time('2023-05-18 15:30:45', '-45 seconds');
} {15:30:00}
do_execsql_test time-with-multiple-modifiers {
SELECT time('2023-05-18 15:30:45', '+1 hours', '-30 minutes', '+15 seconds');
} {16:01:00}
do_execsql_test time-with-invalid-modifier {
SELECT time('2023-05-18 15:30:45', 'invalid modifier');
} {{}}
do_execsql_test time-with-invalid-modifier {
SELECT time('2023-05-18 15:30:45', '+1 hour', 'invalid modifier');
} {{}}