SQLiteは人気の軽量データベースですが、他のデータベースシステムのような組み込みの自動タイムスタンプ機能はありません。しかし、組み込み関数とデータ型を使用することで、簡単に同様の機能を実現できます。このガイドでは、SQLiteデータベース内でタイムスタンプを追加、取得、管理する方法を説明します。
目次
SQLiteデータベースへのタイムスタンプの追加
タイムスタンプを追加するには、日付と時刻の保存用に特別に設計された列を持つテーブルを作成します。DATETIME
データ型がこの目的には最適です。
CREATE TABLE my_table (
id INTEGER PRIMARY KEY AUTOINCREMENT,
data TEXT,
timestamp DATETIME DEFAULT CURRENT_TIMESTAMP
);
このコードは、自動インクリメントする整数ID、データ用のテキストフィールド、およびtimestamp
という名前のDATETIME
列を持つテーブルを作成します。DEFAULT CURRENT_TIMESTAMP
句により、新しい行ごとに現在のタイムスタンプが自動的に設定されます。
DATETIMEデータ型の使用
SQLiteのDATETIME
データ型は、日付と時刻をISO8601形式(YYYY-MM-DD HH:MM:SS)で保存します。SQLite内で日付と時刻データを処理する最も効率的な方法です。CURRENT_TIMESTAMP
関数は、タイムスタンプ列を自動的に設定する際に重要です。
タイムスタンプの取得
標準的なSELECT
文を使用して、タイムスタンプを取得するのは簡単です。
SELECT * FROM my_table;
これにより、テーブル内のすべての行について、timestamp
列を含むすべての列が返されます。
日付と時刻関数の使用
SQLiteは、日付と時刻を操作するためのさまざまな関数を提供しています。いくつかの便利な関数を以下に示します。
CURRENT_TIMESTAMP
: 現在の日付と時刻を返します。STRFTIME('%Y-%m-%d %H:%M:%S', timestamp)
: タイムスタンプを特定の文字列表現にフォーマットします。DATE(timestamp)
: 日付と時刻の値から日付部分を取り出します。TIME(timestamp)
: 日付と時刻の値から時刻部分を取り出します。JULIANDAY(timestamp)
: 日付と時刻の値をユリウス日数に変換します。
日付と時刻のテキスト保存を避ける理由
日付と時刻をテキストとして保存することは強くお勧めしません。いくつかの問題につながります。
- 非効率的な比較: テキスト表現の比較は、数値表現の比較よりも遅くなります。
- データ整合性の問題: 一貫性のないテキスト形式はエラーにつながる可能性があります。
- 機能の制限: テキストで保存されたデータに対して、SQLiteの日付と時刻関数を直接使用することはできません。
最適なパフォーマンスとデータ整合性のために、常にDATETIME
データ型を使用してください。