2013-06-07 95 views
11

SQLite DBのCalendar.getTimeInMilliseconds()の日付を保存します。 私はSELECT文で毎月最初の行をマークする必要があるので、ミリ秒単位でSQLite関数のみを使用して日付形式に変換する必要があります。どうすればこれを避けることができますか?SQLiteで日付にミリ秒を変換する方法

答えて

38

一つは、Unixのタイムスタンプ、つまり、1970年 はそれにミリ秒を変換するため、秒でこのフィドルからこれを確認することができ、ちょうど1000

で割ます

次に、date/time functionを使用して年と月を取得します。

SELECT strftime('%Y-%m', MillisField/1000, 'unixepoch') FROM MyTable 
+0

以下の@bsvtagの回答を参照してください。これには「localtime」が含まれています – Mikitz06

+0

@ Mikitz06これらのミリ秒のタイムスタンプはUTCであると定義されています。結果がUTCである必要があるのか​​、ローカル時間帯にあるのかは、アプリケーションによって異なります。 –

+0

それは公正な点です、サー! :) – Mikitz06

15

ミリ秒を日付に変換する機能や、ミリ秒を日付に変換する機能を避ける必要がありますか? sqliteの日付関数は、秒で動作するので、あなたは

  • この
    select date(milliscolumn/1000,'unixepoch','localtime') from table1
  • のようなクエリでコンバートミリ秒、それはDBに保存する前に、秒にミリ秒に変換し、その後に日付関数を使用しようとすることができSQLクエリ
+0

これは正解でなければなりません。なぜなら、localtimeパラメータを指定しないと、時間が正しくないからです(GMTは世話をしています)。 – Leeeeeeelo

関連する問題