diff options
Diffstat (limited to 'ext/sqlite/libsqlite/src/date.c')
| -rw-r--r-- | ext/sqlite/libsqlite/src/date.c | 14 | 
1 files changed, 8 insertions, 6 deletions
diff --git a/ext/sqlite/libsqlite/src/date.c b/ext/sqlite/libsqlite/src/date.c index d7382aefae..c7489ec078 100644 --- a/ext/sqlite/libsqlite/src/date.c +++ b/ext/sqlite/libsqlite/src/date.c @@ -800,18 +800,20 @@ static void strftimeFunc(sqlite_func *context, int argc, const char **argv){          case 'H':  sprintf(&z[j],"%02d",x.h); j+=2; break;          case 'W': /* Fall thru */          case 'j': { -          int n; +          int n;             /* Number of days since 1st day of year */            DateTime y = x;            y.validJD = 0;            y.M = 1;            y.D = 1;            computeJD(&y); -          n = x.rJD - y.rJD + 1; +          n = x.rJD - y.rJD;            if( zFmt[i]=='W' ){ -            sprintf(&z[j],"%02d",(n+6)/7); +            int wd;   /* 0=Monday, 1=Tuesday, ... 6=Sunday */ +            wd = ((int)(x.rJD+0.5)) % 7; +            sprintf(&z[j],"%02d",(n+7-wd)/7);              j += 2;            }else{ -            sprintf(&z[j],"%03d",n); +            sprintf(&z[j],"%03d",n+1);              j += 3;            }            break; @@ -847,19 +849,18 @@ static void strftimeFunc(sqlite_func *context, int argc, const char **argv){  ** external linkage.  */  void sqliteRegisterDateTimeFunctions(sqlite *db){ +#ifndef SQLITE_OMIT_DATETIME_FUNCS    static struct {       char *zName;       int nArg;       int dataType;       void (*xFunc)(sqlite_func*,int,const char**);    } aFuncs[] = { -#ifndef SQLITE_OMIT_DATETIME_FUNCS      { "julianday", -1, SQLITE_NUMERIC, juliandayFunc   },      { "date",      -1, SQLITE_TEXT,    dateFunc        },      { "time",      -1, SQLITE_TEXT,    timeFunc        },      { "datetime",  -1, SQLITE_TEXT,    datetimeFunc    },      { "strftime",  -1, SQLITE_TEXT,    strftimeFunc    }, -#endif    };    int i; @@ -870,4 +871,5 @@ void sqliteRegisterDateTimeFunctions(sqlite *db){        sqlite_function_type(db, aFuncs[i].zName, aFuncs[i].dataType);      }    } +#endif  }  | 
