mirror of
https://github.com/ncruces/go-sqlite3.git
synced 2026-01-19 09:04:16 +00:00
46 lines
1.3 KiB
Diff
46 lines
1.3 KiB
Diff
# Set UTC timezone, compute local offset.
|
|
--- sqlite3.c.orig
|
|
+++ sqlite3.c
|
|
@@ -340,6 +340,7 @@ static int setDateTimeToCurrent(sqlite3_context *context, DateTime *p){
|
|
p->iJD = sqlite3StmtCurrentTime(context);
|
|
if( p->iJD>0 ){
|
|
p->validJD = 1;
|
|
+ p->tzSet = 1;
|
|
return 0;
|
|
}else{
|
|
return 1;
|
|
@@ -355,6 +356,7 @@ static int setDateTimeToCurrent(sqlite3_context *context, DateTime *p){
|
|
static void setRawDateNumber(DateTime *p, double r){
|
|
p->s = r;
|
|
p->rawS = 1;
|
|
+ p->tzSet = 1;
|
|
if( r>=0.0 && r<5373484.5 ){
|
|
p->iJD = (sqlite3_int64)(r*86400000.0 + 0.5);
|
|
p->validJD = 1;
|
|
@@ -731,7 +733,16 @@ static int parseModifier(
|
|
** show local time.
|
|
*/
|
|
if( sqlite3_stricmp(z, "localtime")==0 && sqlite3NotPureFunc(pCtx) ){
|
|
- rc = toLocaltime(p, pCtx);
|
|
+ if( p->tzSet!=0 || p->tz==0 ) {
|
|
+ rc = toLocaltime(p, pCtx);
|
|
+ i64 iOrigJD = p->iJD;
|
|
+ p->tzSet = 0;
|
|
+ computeJD(p);
|
|
+ p->tz = (p->iJD-iOrigJD)/60000;
|
|
+ if( abs(p->tz)>= 900 ) p->tz = 0;
|
|
+ } else {
|
|
+ rc = 0;
|
|
+ }
|
|
}
|
|
break;
|
|
}
|
|
@@ -781,6 +792,7 @@ static int parseModifier(
|
|
p->validJD = 1;
|
|
p->tzSet = 1;
|
|
}
|
|
+ p->tz = 0;
|
|
rc = SQLITE_OK;
|
|
}
|
|
#endif
|