開発に SQLite を使う時の注意点

皆さんは Web アプリの RDBMS には何を使っていますか?
巷では MySQL(MariaDB)、Oracle、PostgreSQL あたりが主流と聞きます。

しかし、これらを開発時に使うのはセットアップが面倒ですよね?
はい、そこ「Docker 使え」とか言わない。

面倒なので SQLite を使ってしまう時ありませんか?
え、使わない?ここは「使う」って言う所ですよ。空気読んでください。

というわけで(無理矢理ですが) SQLite で開発する時のトラップ注意点です。

一言で済みます。「データ型が INTEGER、REAL、TEXT、BLOB しかない!」のです。
つまり DATE とか TIME とか TIMESTAMP とかが無いのです。
まあ、他に DECIMAL とか BOOLEAN も使えませんが今回は見なかったことにします。

よって、SQL 文で日付形式や時間形式の演算および比較ができません。
…ええ、お察しの通り色々コード書いてから気付きましたとも。
指定日を含む期間を探す関数のテストを書いた時に判明しましたよ…
なまじ(文字列型としての)比較が期待通り動くものだから発覚が遅れました。

これから PostgreSQL を準備して再テスト&書き直しです。
Twelve factor app 10.開発/本番一致の意味が身に染みました。
願わくば、この記事が誰かの転ばぬ先の杖になると良いのですが。