SQLite3でタイムゾーンをUTCに変更しつつミリ秒をInsertする

strftime(format, timestring, modifier, modifier, ...)を使用する。

環境

対策

  • formatに'%Y-%m-%d %H:%M:%f'を指定する。(%fがSS.SSS)
  • modifierに'utc'を指定する。

例(Ruby

require 'sqlite3'

SQLite3::Database.new("something.db") {|db|
  sql = "INSERT INTO events (at) VALUES (strftime('%Y-%m-%d %H:%M:%f', :at, 'utc'));"
  db.execute(sql, at: Time.now.strftime("%Y-%m-%d %H:%M:%S.%3N"))       
}

参考

SQLite Query Language: Date And Time Functions