mirror of
https://github.com/sqlite/sqlite.git
synced 2026-10-23 21:49:02 +03:00
Merge the 24:00:00 fix from branch-3.54 into trunk
FossilOrigin-Name: 3ce64081cab882b60ad73db77da961e479cd84eb151444f420da9fcc370f740d
This commit is contained in:
16
manifest
16
manifest
@@ -1,5 +1,5 @@
|
||||
C Ensure\sthe\scorrect\scollation\ssequence\sis\sused\sfor\sexpressions\slike\s"a\sIN\s(SELECT\sb\sCOLLATE\s...)"\swhen\susing\san\sindex\son\s"a".\sBug\s[bugs:/info/2026-10-14T18:00:55Z\s|\s2026-10-14T18:00:55Z].
|
||||
D 2026-10-14T20:07:19.081
|
||||
C Merge\sthe\s24:00:00\sfix\sfrom\sbranch-3.54\sinto\strunk
|
||||
D 2026-10-15T13:33:20.847
|
||||
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
|
||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||
@@ -751,7 +751,7 @@ F src/build.c 1406d252bc5b2c3f2150edd4426e5981eabf1000944be8db8d470b96eb64ee07
|
||||
F src/callback.c 3605bbf02bd7ed46c79cd48346db4a32fc51d67624400539c0532f4eead804ad
|
||||
F src/carray.c 22879bbd9e14fc4868f223b0d49bcdbbda4616c89f1519ec6a5e64b98a4137b1
|
||||
F src/complete.c f68f545b9c6c19e2e848672dc0e4da230072fedc335d8980b55242cc4cfa60da
|
||||
F src/date.c 080641f59097d14fc7341f8bc0458d273b3a62d8381916db8ccbc89c2aae07b3
|
||||
F src/date.c 7719f64947e718a38897af459259eeac1aeda7daf7b87860c4d37fc687101004
|
||||
F src/dbpage.c ec8590c5e7a564cef28ca3c6156521316a4d26cb572a34841b0bcb26b67b3f97
|
||||
F src/dbstat.c 34d4e825fbf763640ce3dbc56910ab080495ef4a6efb48b2b1852a43d43763fc
|
||||
F src/delete.c f3f07c1fb6ac87fac2425d48fd40ecb2f24a4495a9966f5a939668d3576916c8
|
||||
@@ -1107,7 +1107,7 @@ F test/ctime.test 340f362f41f92972bbd71f44e10569a5cc694062b692231bd08aa6fe6c1c47
|
||||
F test/cursorhint.test d8b93ac48dfdb2cf4284142710d63e860b6497afff2e9c525daf752a229e5b97
|
||||
F test/cursorhint2.test a10f29c0c52d4d73c19cf639f3c33cccbf5024bcf950fa48f2a8cdc14628b985
|
||||
F test/dataversion1.test 6e5e86ac681f0782e766ebcb56c019ae001522d114e0e111e5ebf68ccf2a7bb8
|
||||
F test/date.test d345d7905b6a212ced06efd6c236da0745f0f488e8d46df83940956b573adbc0
|
||||
F test/date.test e71d1c3640a6d1a59a8ea94b52dbe934ecaaeecd9e9db73ee1d10d27a5a6aece
|
||||
F test/date2.test 7e12ec14aaf4d5e6294b4ba140445b0eca06ea50062a9c3a69c4ee13d0b6f8b1
|
||||
F test/date3.test a1b77abf05c6772fe5ca2337cac1398892f2a41e62bce7e6be0f4a08a0e64ae5
|
||||
F test/date4.test b5ad22baf7394e008ac59383840159daedd45be31dcf74a3b2450ec0e28955ce
|
||||
@@ -2289,8 +2289,8 @@ F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee
|
||||
F tool/warnings.sh a554d13f6e5cf3760f041b87939e3d616ec6961859c3245e8ef701d1eafc2ca2
|
||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||
F tool/winmain.c 00c8fb88e365c9017db14c73d3c78af62194d9644feaf60e220ab0f411f3604c
|
||||
P 7408f90ecc2dd26aceb52f92de78b8e1521cb5a294d3231fd32a903afe1db41d
|
||||
R 5f6bbf38b99d69e3dd5ddb9061ec4c5c
|
||||
U dan
|
||||
Z 35b9fc891349c0ce95466fe213532097
|
||||
P bbdd13370de9303561bf501f88bf62d2ba363c6e5d950d8d7416e59874768ee0 69071e25cad52b7fe15749f5fb969e847f9cd65e66341e8d1d4e5f5282283cd4
|
||||
R 997bf1f7e3f0c95c82dc0a4870242ace
|
||||
U drh
|
||||
Z 0c8a9a0f0e92ca8d8f1848fdc3b11728
|
||||
# Remove this line to create a well-formed Fossil manifest.
|
||||
|
||||
@@ -1 +1 @@
|
||||
bbdd13370de9303561bf501f88bf62d2ba363c6e5d950d8d7416e59874768ee0
|
||||
3ce64081cab882b60ad73db77da961e479cd84eb151444f420da9fcc370f740d
|
||||
|
||||
49
src/date.c
49
src/date.c
@@ -302,6 +302,21 @@ static void computeJD(DateTime *p){
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** Return the number of dates in a specific month.
|
||||
*/
|
||||
static int daysOfMonth(int Y, int M){
|
||||
if( (1<<M) & 0x15aa ){
|
||||
return 31;
|
||||
}else if( M!=2 ){
|
||||
return 30;
|
||||
}else if( Y%4==0 && (Y%100!=0 || Y%400==0) ){
|
||||
return 29;
|
||||
}else{
|
||||
return 28;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
** Given the YYYY-MM-DD information current in p, determine if there
|
||||
** is day-of-month overflow and set nFloor to the number of days that
|
||||
@@ -309,24 +324,12 @@ static void computeJD(DateTime *p){
|
||||
** date back to the end of the month.
|
||||
*/
|
||||
static void computeFloor(DateTime *p){
|
||||
int mxD; /* Maximum day number for the current month */
|
||||
assert( p->validYMD || p->isError );
|
||||
assert( p->D>=0 && p->D<=31 );
|
||||
assert( p->D>=0 && p->D<=32 );
|
||||
assert( p->M>=0 && p->M<=12 );
|
||||
if( p->validHMS && p->h==24 ){
|
||||
p->h = 0;
|
||||
p->D++;
|
||||
}
|
||||
if( p->D<=28 ){
|
||||
p->nFloor = 0;
|
||||
}else if( (1<<p->M) & 0x15aa ){
|
||||
p->nFloor = 0;
|
||||
}else if( p->M!=2 ){
|
||||
p->nFloor = (p->D==31);
|
||||
}else if( p->Y%4!=0 || (p->Y%100==0 && p->Y%400!=0) ){
|
||||
p->nFloor = p->D - 28;
|
||||
}else{
|
||||
p->nFloor = p->D - 29;
|
||||
}
|
||||
mxD = daysOfMonth(p->Y, p->M);
|
||||
p->nFloor = p->D>mxD ? p->D - mxD : 0;
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -356,7 +359,19 @@ static int parseYyyyMmDd(const char *zDate, DateTime *p){
|
||||
zDate += 10;
|
||||
while( sqlite3Isspace(*zDate) || 'T'==*(u8*)zDate ){ zDate++; }
|
||||
if( parseHhMmSs(zDate, p)==0 ){
|
||||
/* We got the time */
|
||||
if( p->h==24 ){
|
||||
int mxD = daysOfMonth(Y,M);
|
||||
p->h = 0;
|
||||
D++;
|
||||
if( D>mxD ){
|
||||
D -= mxD;
|
||||
M++;
|
||||
if( M>12 ){
|
||||
M = 1;
|
||||
Y++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}else if( *zDate==0 ){
|
||||
p->validHMS = 0;
|
||||
}else{
|
||||
|
||||
@@ -760,6 +760,11 @@ datetest 23.13 {strftime('%d/%w/%U/%W','2000-01-01 24:00:00')} {02/0/01/00}
|
||||
datetest 23.14 {datetime('24:01')} {NULL}
|
||||
datetest 23.15 {datetime('24:00:01')} {NULL}
|
||||
datetest 23.16 {datetime('24:00:00.001')} {NULL}
|
||||
|
||||
datetest 23.17 {datetime('2024-01-31 24:00:00')} {2024-02-01 00:00:00}
|
||||
datetest 23.18 {datetime('2024-02-28 24:00:00')} {2024-02-29 00:00:00}
|
||||
datetest 23.19 {datetime('2024-02-29 24:00:00')} {2024-03-01 00:00:00}
|
||||
datetest 23.20 {datetime('2025-02-28 24:00:00')} {2025-03-01 00:00:00}
|
||||
datetest 23.21 {datetime('2024-04-30 24:00:00')} {2024-05-01 00:00:00}
|
||||
datetest 23.22 {datetime('2024-12-31 24:00:00')} {2025-01-01 00:00:00}
|
||||
|
||||
finish_test
|
||||
|
||||
Reference in New Issue
Block a user