ホーム › フォーラム › A5:SQL Mk-2掲示板 › SQLiteのDateTimeカラムの表示について
- このトピックには2件の返信、2人の参加者があり、最後に
sin5により6年、 11ヶ月前に更新されました。
3件の投稿を表示中 - 1 - 3件目 (全3件中)
-
投稿者投稿
-
sin5
ゲスト便利に使わせていただいております。
SQLiteに接続した状態で下記の様なSQLを実行すると、SQLiteのDateTime関数を使った場合と使わなかった場合で結果が異なります。
1234CREATE TABLE table1 ( id INTEGER PRIMARY KEY AUTOINCREMENT, testDateTime DATETIME ) ;INSERT INTO table1 ( testdatetime ) VALUES (julianday('2018-11-27 12:00:00')) ;INSERT INTO table1 ( testdatetime ) VALUES (julianday('2018-11-27 12:00:01')) ;SELECT datetime(testdatetime), testdatetime FROM table1;結果
123datetime(testdatetime) testDateTime2018-11-27 12:00:00 1970/01/29 10:54:102018-11-27 12:00:01 2018/11/27 12:00:01上記の通り、なぜか12:00:00の場合のみ結果が異なります。
出来れば関数なしで、正しい結果を得たいと思いますが、何か設定がありますでしょうか?よろしくお願いいたします。
松原正和
キーマスターsin5さん、こんにちは。
調査したところ、SQLite3は日付時刻型データに対して数値表現で値を挿入した場合、ユリウス通日と呼ばれる形式で表現された日時であると解釈します。ユリウス通日はグレゴリオ暦でいうところの、西暦 -4712年1月1日の正午からの経過日数を表します。時刻は少数を使って表現します。(1.0を1日とした少数表現で、当然正午からの経過時間です。)
一方A5:SQL Mk-2で使っているUniDACでは、SQLite3の日付で数値表現を扱う場合、なぜか小数点が付かない場合(つまり正午)にかぎり、ユリウス通日ではなく、Unixtimeであると誤って解釈して出力しているようでした。
つぎのリリース候補版(version 2.14.0 rc4)で修正しますのでお試しいただければと思います。(本日 12/2 中にリリース予定です。)sin5
ゲスト調査いただきありがとうございます。
早速RC4をダウンロードさせていただき、期待する結果が得られることを確認しました。
対応頂きありがとうございます。時期正式リリースまではRC版を利用させて頂きます。
ありがとうございました。
-
投稿者投稿
3件の投稿を表示中 - 1 - 3件目 (全3件中)