SQLite データベースに日時値を挿入しようとしています。それは成功しているようですが、値を取得しようとするとエラーが発生します:
<データを読み取れません>
SQLステートメントは次のとおりです。
create table myTable (name varchar(25), myDate DATETIME)
insert into myTable (name,mydate) Values ('fred','jan 1 2009 13:22:15')
必要な形式は次のとおりです。
'2007-01-01 10:00:00'
つまり、yyyy-MM-dd HH:mm:ss
ただし、可能であれば、パラメーター化されたクエリを使用してください。これにより、書式設定の詳細を心配する必要がなくなります。
SQLiteに日付を保存する方法は次のとおりです。
yyyy-mm-dd hh:mm:ss.xxxxxx
SQLiteには、使用できる日付と時刻の関数もいくつかあります。 SQLiteで理解されるSQL、日付と時刻の関数 を参照してください。
STRFTIME関数を使用して挿入できるようにするには、指定する日付文字列の形式を変更する必要があります。理由は、月の省略形のオプションはありません:
%d day of month: 00
%f fractional seconds: SS.SSS
%H hour: 00-24
%j day of year: 001-366
%J Julian day number
%m month: 01-12
%M minute: 00-59
%s seconds since 1970-01-01
%S seconds: 00-59
%w day of week 0-6 with sunday==0
%W week of year: 00-53
%Y year: 0000-9999
%% %
別の方法は、日付/時刻を既に受け入れられている形式にフォーマットすることです。
リファレンス: SQLiteの日付と時刻関数
OF NOW()
(MySQL)の代わりに、必要なときにCURRENT_TIMESTAMP
を使用します
これは最も一般的または効率的な方法ではないかもしれませんが、 SQLite の強力なデータ型はすべて無視する傾向があります。
以前に(もちろん、C#でSQLiteを使用する場合)SQLiteライブラリの周りに薄いC#ラッパーを記述して、DateTimeオブジェクトを処理しているかのようにSQLiteに対する挿入と抽出を処理しました。