[GRASS-dev] Re: [GRASS GIS] #730: sqlite: troubles with datetime
columns: unable to parse decltype: datetime
Markus Neteler
neteler at osgeo.org
Thu Aug 27 13:58:32 EDT 2009
Hi,
On Sun, Aug 23, 2009 at 12:36 AM, GRASS GIS<trac at osgeo.org> wrote:
> #730: sqlite: troubles with datetime columns: unable to parse decltype: datetime
> ----------------------+-----------------------------------------------------
> Reporter: neteler | Owner: grass-dev at lists.osgeo.org
> Type: defect | Status: new
> Priority: normal | Milestone: 6.4.0
> Component: Database | Version: 6.4.0 RCs
> Keywords: | Platform: All
> Cpu: All |
> ----------------------+-----------------------------------------------------
> There are some troubles with datetime columns in SQLite:
>
> {{{
> GRASS 6.4.0svn (patUTM32):> db.select meteo_iasma_hourly_modis_overpass
> WARNING: SQLite driver: unable to parse decltype: datetime
> WARNING: SQLite driver: unable to parse decltype: datetime
> WARNING: SQLite driver: column 'data', SQLite type 3 is not supported
> cat|station|t_max|t_min|t_mean
> 1|st14|8.3|7.1|7.7
> 2|st14|9.5|7.7|9.4
> 3|st14|-1.8|-2.5|-2.2
> 4|st14|-2|-2.4|-2.2
> ...
> }}}
>
> The column is not shown at all above (but below). Indeed, for SQLite
> itself the type exists and it doesn't have problems with the table:
>
> {{{
> sqlite3 $HOME/grassdata/patUTM32/meteo_iasma/sqlite.db
> sqlite> .schema meteo_iasma_hourly_modis_overpass
> CREATE TABLE meteo_iasma_hourly_modis_overpass (cat integer, station
> varchar ( 255 ), data datetime, t_max double precision, t_min double
> precision, t_mean double precision);
> CREATE UNIQUE INDEX meteo_iasma_hourly_modis_overpass_cat on
> meteo_iasma_hourly_modis_overpass ( cat );
>
> sqlite> select * from meteo_iasma_hourly_modis_overpass;
> 1|st14|2001-11-01 10:00:00|8.3|7.1|7.7
> 2|st14|2001-11-01 11:00:00|9.5|7.7|9.4
> 3|st14|2003-04-11 1:00:00|-1.8|-2.5|-2.2
> 4|st14|2003-04-11 2:00:00|-2.0|-2.4|-2.2
> ...
> }}}
>
> I see that in db/drivers/sqlite/describe.c there is no "datetime":
>
> {{{
> 334 if (sscanf(buf, "decimal ( %d , %d )", length, length) == 2)
> 335 return DB_SQL_TYPE_DECIMAL;
>
> 336 if (sscanf(buf, "time ( %d )", length) == 1 ||
> 337 sscanf(buf, "timetz ( %d )", length) == 1)
> 338 return DB_SQL_TYPE_TIME;
>
> 339 if (sscanf(buf, "timestamp ( %d )", length) == 1 ||
> 340 sscanf(buf, "timestamptz ( %d )", length) == 1)
> 341 return DB_SQL_TYPE_TIMESTAMP;
> }}}
>
> Not sure what to do: map to which DB_SQL_TYPE_xxx?
Sorry to insist... any pointers?
Markus
More information about the grass-dev
mailing list