ホーム › フォーラム › A5:SQL Mk-2掲示板 › SQLIte の INTEGER型データ表示
- このトピックには5件の返信、2人の参加者があり、最後に薗田 茂雄により5年、 10ヶ月前に更新されました。
-
投稿者投稿
-
薗田 茂雄ゲスト
このたびSQLiteで初めて、A5:SQL Mk-2を使わせてもらいましたが、SQLiteではINTGEGER型データには64ビット整数をINSERT出来るのですが、A5:SQL Mk-2を通して内容を確認すると、下位32ビット分のみのデータを表示しているようです。
これはSQLiteに関する制限事項となるのでしょうか?
64ビットの値をそのまま確認できれば大変ありがたいのですか...。現象の確認方法は、SQLite3.exeを使用して以下のような操作で可能です。
sqlite> .header on
sqlite> .mode column
sqlite> CREATE TABLE HolidayTable (Time INTEGER NOT NULL,Content TEXT NOT NULL);
sqlite> INSERT INTO HolidayTable (Time,Content) VALUES (20190501120000000,’即位の礼’);
sqlite> SELECT * FROM HolidayTable;Time Content
—————– ———-
20190501120000000 即位の礼sqlite> .exit
以上の操作で作成されたファイルをA5:SQL Mk-2で開くと、20190501120000000 の部分が、1595424768 と表示されます。
御検討のほど、宜しくお願い致します。
松原正和キーマスター薗田 茂雄さんこんにちは。
利用しているDB接続ライブラリUniDACに問題があり、SQLiteで32bitを超える整数値をうまく取得できないようでした。Version 2.14.0 rc 8で修正してみましたのでお試しいただければと思います。薗田 茂雄ゲスト問題の改修確認できました。
素早い御対応ありがとうございました。
これからも愛用させて頂きますので、よろしくお願いします。薗田 茂雄ゲストSQLite のデータ型に関してまた別の現象なのですが、今回使用したテーブル作成SQLのINTEGER型 を DATETIME型 に変えて実行すると異なった状況が発生します。
Version 2.14.0 rc 8で修正していただいた現象とは異なります。
確認方法は、SQLite3.exeを使用して以下のような操作で可能です。sqlite> .header on
sqlite> .mode column
sqlite> CREATE TABLE HolidayTable (Time DATETIME NOT NULL,Content TEXT NOT NULL);
sqlite> INSERT INTO HolidayTable (Time,Content) VALUES (20190501120000000,’即位の礼’);
sqlite> SELECT * FROM HolidayTable;Time Content
—————– ———-
20190501120000000 即位の礼sqlite> .exit
以上の操作で作成されたファイルをA5:SQL Mk-2で開くと、下記内容のメッセージボックスが表示されます。
‘20190501120000000’ は整数ではありませんこちらの対応も可能でしょうか?、御検討のほど、宜しくお願い致します。
松原正和キーマスター薗田 茂雄さんこんにちは。
SQLiteはデータ型の制約が緩く、DATETIME型で列を定義しても、実際のところどんなデータ型も格納できてしまいます。
DATETIME型と定義されている方があった場合、A5:SQL Mk-2はDATATIME型であるとして何とかデータを処理しようとします。数値型が取得された場合、それをユリウス通日またはUnixTimeとして扱おうとしていました。このときに内部的な文字列型から整数型への変換でエラーが起こっていたようでした。
数字表現された日付をユリウス通日として扱うのはSQLite3の標準的な動作のようですが、ユリウス通日として扱えない整数の扱いは定義されていないようです。とりあえず、UnixTimeとして扱うよりyyyyMMddhhmmsszzz表現の整数あるいはその部分文字列として扱うようにしたほうが良いような気がするので次のrc版で修正することにします。- この返信は5年、 10ヶ月前に松原正和が編集しました。
薗田 茂雄ゲストSQLite のデータ型の扱いが曖昧で縛りが緩いが故の現象ということですね。
現象に鑑み対応して頂けるのは扱う側の自由度も担保されるので、非常にありがたいことです。
感謝致します。 -
投稿者投稿