mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Extended the time-diff format so that it can have a 5-digit year. This enables
time differences to span the full range of dates supported by SQLite. Also fix some inaccuracies in the computation of time differences and add new test cases. FossilOrigin-Name: d57ddbf4eeeb3ccfe31871f098045b9e58634153a3c3030f597cb58c1177218a
This commit is contained in:
@ -79,13 +79,16 @@ datetest 3.4 {timediff('1999-01-31','2000-03-02')} {-0001-01-02 00:00:00.000}
|
||||
unset -nocomplain p1
|
||||
unset -nocomplain p2
|
||||
set p1 {
|
||||
1 {0000-01-01 12:34:56}
|
||||
2 {1776-07-04 13:00:00}
|
||||
3 {1969-07-20 20:17}
|
||||
4 {2440587.5}
|
||||
5 {2000-05-29 14:26}
|
||||
6 {2023-05-29 18:11}
|
||||
7 {2050-05-29 14:26}
|
||||
0 {-4713-11-24 12:00:00}
|
||||
1 {-2000-04-30 05:19:26}
|
||||
2 {0000-01-01 12:34:56}
|
||||
3 {1776-07-04 13:00:00}
|
||||
4 {1969-07-20 20:17}
|
||||
5 {2440587.5}
|
||||
6 {2000-05-29 14:26}
|
||||
7 {2023-05-29 18:11}
|
||||
8 {2050-05-29 14:26}
|
||||
9 {4796-02-29 11:23:55.46}
|
||||
}
|
||||
set p2 {
|
||||
A {1066-10-14}
|
||||
@ -102,6 +105,8 @@ set p2 {
|
||||
K {2006-06-30 01:23:45}
|
||||
L {2007-12-31 02:00}
|
||||
M {2008-01-01 01:59}
|
||||
N {3152-07-04 12:00}
|
||||
P {9999-12-31 23:59:59}
|
||||
}
|
||||
|
||||
foreach {x1 d1} $p1 {
|
||||
@ -144,6 +149,74 @@ datetest 5-18 {datetime('2000-01-01','+0001-02-03 01:02:03.500')} \
|
||||
datetest 5-19 {datetime('2000-01-01','+0001-02-03 01:02:03.500x')} {NULL}
|
||||
datetest 5-20 {datetime('2000-01-01','+0001-02-03 01:02:03.500 x')} {NULL}
|
||||
|
||||
unset -nocomplain p1
|
||||
unset -nocomplain p2
|
||||
set p1 {
|
||||
a {2000-01-01 00:00:00}
|
||||
b {2000-01-31 23:59:59}
|
||||
c {2000-02-01 00:00:00}
|
||||
d {2000-02-29 23:59:59}
|
||||
e {2000-03-01 00:00:00}
|
||||
f {2000-03-31 23:59:59}
|
||||
g {2000-04-01 00:00:00}
|
||||
h {2000-04-30 23:59:59}
|
||||
i {2000-05-01 00:00:00}
|
||||
j {2000-05-31 23:59:59}
|
||||
k {2000-06-01 00:00:00}
|
||||
l {2000-06-30 23:59:59}
|
||||
m {2000-07-01 00:00:00}
|
||||
n {2000-07-31 23:59:59}
|
||||
o {2000-08-01 00:00:00}
|
||||
p {2000-08-31 23:59:59}
|
||||
q {2000-09-01 00:00:00}
|
||||
r {2000-09-30 23:59:59}
|
||||
s {2000-10-01 00:00:00}
|
||||
t {2000-10-31 23:59:59}
|
||||
u {2000-11-01 00:00:00}
|
||||
v {2000-11-30 23:59:59}
|
||||
w {2000-12-01 00:00:00}
|
||||
x {2000-12-31 23:59:59}
|
||||
}
|
||||
set p2 {
|
||||
A {2001-01-01 00:00:00}
|
||||
B {2001-01-31 23:59:59}
|
||||
C {2001-02-01 00:00:00}
|
||||
D {2001-02-28 23:59:59}
|
||||
E {2001-03-01 00:00:00}
|
||||
F {2001-03-31 23:59:59}
|
||||
G {2001-04-01 00:00:00}
|
||||
H {2001-04-30 23:59:59}
|
||||
I {2001-05-01 00:00:00}
|
||||
J {2001-05-31 23:59:59}
|
||||
K {2001-06-01 00:00:00}
|
||||
L {2001-06-30 23:59:59}
|
||||
M {2001-07-01 00:00:00}
|
||||
N {2001-07-31 23:59:59}
|
||||
O {2001-08-01 00:00:00}
|
||||
P {2001-08-31 23:59:59}
|
||||
Q {2001-09-01 00:00:00}
|
||||
R {2001-09-30 23:59:59}
|
||||
S {2001-10-01 00:00:00}
|
||||
T {2001-10-31 23:59:59}
|
||||
U {2001-11-01 00:00:00}
|
||||
V {2001-11-30 23:59:59}
|
||||
W {2001-12-01 00:00:00}
|
||||
X {2001-12-31 23:59:59}
|
||||
}
|
||||
|
||||
foreach {x1 d1} $p1 {
|
||||
foreach {x2 d2} $p2 {
|
||||
set r1 [db one {SELECT datetime($d1)}]
|
||||
do_execsql_test timediff-6-$x1$x2 {
|
||||
SELECT datetime($d2, timediff($d1,$d2));
|
||||
} [list $r1]
|
||||
set r2 [db one {SELECT datetime($d2)}]
|
||||
do_execsql_test timediff-6-$x2$x1 {
|
||||
SELECT datetime($d1, timediff($d2,$d1));
|
||||
} [list $r2]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
finish_test
|
||||
|
Reference in New Issue
Block a user