On Thu, Feb 9, 2012 at 11:58 AM, yesnid <ns...@pelco.com> wrote: > > Hello Richard, > > I am having a similar issue, I am trying to store a 13 digit value in my > table and it is being converted to a 10 digit value? Is there something > that > I need to do, to enable the 8 byte values for integer? >
You don't have to do anything. It just works. Behold: SQLite version 3.7.11 2012-01-31 23:34:21 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite> create table t1(x); sqlite> insert into t1 values(9223372036854775807); sqlite> select x, x-1 from t1; 9223372036854775807|9223372036854775806 Do follow Simon's advice, though, and make sure you are not trying to store the integers in a TEXT column. > > Thank you, > > > > Richard Hipp-3 wrote: > > > > On Tue, Jan 31, 2012 at 4:32 PM, Richard D Watkins < > > richard.d.watk...@seagate.com> wrote: > > > >> I have some very large integers I need to insert and retrieve from > SQLite > >> without losing any digits. These numbers can be up to 8 bytes (20 > digits) > >> long. > >> > > > > SQLite integers are 8-byte twos-complement with a range of > > -9223372036854775808 to 9223372036854775807 (19 digits). Anything > outside > > this range is converted to double, and is thus subject to the 17-digit > > approximation. We do test the boundary cases carefully, so we know > > everything works over the full range specified above. > > > > Do you think your python interface layer might be doing the unwanted > > conversion to floating point for you? > > > > > >> > >> The SQLite documentation says INTEGER datatypes can hold values up to 8 > >> bytes long, however, when I insert any number greater than 17 digits, it > >> gets converted into a REAL, and truncated to 17 significant digits. > >> > >> I have found only one way to insert/fetch these values without losing > >> digits: define the column affinity to be TEXT, convert the value to a > >> string in Python, then insert it into the SQLite database. The fetched > >> value will be TEXT and contain all digits. > >> > >> > >> However, if I do any arithmetic on it as the query executes, the value > >> gets > >> converted to REAL, truncated, then the truncated value is used in the > >> arithmetic. > >> > >> I have a SQLite database version 3.7.8. I'm developing in Python > version > >> 2.4.4 and using PySqlite version 2.6.3. > >> > >> I'm aware of Adapters and Converters. They would have to be made such > >> that > >> the returned value is converted back to a TEXT value before SQLite > >> returns > >> the value to the program. This might work, but I would prefer to let > >> SQLite > >> do the manipulation in the usual manner. > >> > >> Is there any way to insert integers of any size, then retrieve them with > >> a > >> query that might do math or other manipulations on the values, without > >> losing digits? > >> > >> Thanks!! > >> > >> Regards, > >> Richard Watkins > >> Product Development & Systems Engineering > >> phone: 720-684-2193 > >> email: richard.watk...@seagate.com > >> _______________________________________________ > >> sqlite-users mailing list > >> sqlite-users@sqlite.org > >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > >> > > > > > > > > -- > > D. Richard Hipp > > d...@sqlite.org > > _______________________________________________ > > sqlite-users mailing list > > sqlite-users@sqlite.org > > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > > > > > -- > View this message in context: > http://old.nabble.com/Cannot-insert-retrieve-8-byte-integers-without-losing-digits-tp33243026p33294747.html > Sent from the SQLite mailing list archive at Nabble.com. > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > -- D. Richard Hipp d...@sqlite.org _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users