mirror of
https://gitea.invidious.io/iv-org/shard-crystal-sqlite3.git
synced 2024-08-15 00:53:26 +00:00
Fix timestamp reading issue (#68)
This commit is contained in:
parent
367c11031d
commit
985bfa2d7c
6 changed files with 76 additions and 5 deletions
|
@ -2,7 +2,8 @@ require "db"
|
|||
require "./sqlite3/**"
|
||||
|
||||
module SQLite3
|
||||
DATE_FORMAT = "%F %H:%M:%S.%L"
|
||||
DATE_FORMAT_SUBSECOND = "%F %H:%M:%S.%L"
|
||||
DATE_FORMAT_SECOND = "%F %H:%M:%S"
|
||||
|
||||
# :nodoc:
|
||||
TIME_ZONE = Time::Location::UTC
|
||||
|
|
|
@ -64,11 +64,22 @@ class SQLite3::ResultSet < DB::ResultSet
|
|||
end
|
||||
|
||||
def read(t : Time.class) : Time
|
||||
Time.parse read(String), SQLite3::DATE_FORMAT, location: SQLite3::TIME_ZONE
|
||||
text = read(String)
|
||||
if text.includes? "."
|
||||
Time.parse text, SQLite3::DATE_FORMAT_SUBSECOND, location: SQLite3::TIME_ZONE
|
||||
else
|
||||
Time.parse text, SQLite3::DATE_FORMAT_SECOND, location: SQLite3::TIME_ZONE
|
||||
end
|
||||
end
|
||||
|
||||
def read(t : Time?.class) : Time?
|
||||
read(String?).try { |v| Time.parse(v, SQLite3::DATE_FORMAT, location: SQLite3::TIME_ZONE) }
|
||||
read(String?).try { |v|
|
||||
if v.includes? "."
|
||||
Time.parse v, SQLite3::DATE_FORMAT_SUBSECOND, location: SQLite3::TIME_ZONE
|
||||
else
|
||||
Time.parse v, SQLite3::DATE_FORMAT_SECOND, location: SQLite3::TIME_ZONE
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
def read(t : Bool.class) : Bool
|
||||
|
|
|
@ -70,7 +70,7 @@ class SQLite3::Statement < DB::Statement
|
|||
end
|
||||
|
||||
private def bind_arg(index, value : Time)
|
||||
bind_arg(index, value.in(SQLite3::TIME_ZONE).to_s(SQLite3::DATE_FORMAT))
|
||||
bind_arg(index, value.in(SQLite3::TIME_ZONE).to_s(SQLite3::DATE_FORMAT_SUBSECOND))
|
||||
end
|
||||
|
||||
private def bind_arg(index, value)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue