Tips

sqlite2と3では記述が違うので注意。
型がないから楽だけど、ちょっとコツがいる時がある。
sqlite2ではnumeric
sqlite3ではinteger

tksqlite

  • tksqlite
    • SqliteのGUIクラインとtkで作られているので各種OS用がある。環境変数のLANGにjaを指定する日本語になる。

ドットコマンド

.databases
#dbファイルの場所を表示
.indices $table
#指定したテーブルに作成されたindexを表示
.mode csv | column | html | insert | line | list | tabs | tcl
#.mode html だとtableタグが出てくる!
.output $filename
#結果をファイル出力
.read $sql_file
#sqlファイルを読み込む
.separator
#区切り文字を指定する

関数

計算した数値を丸める時

select rtrim(int/10000,".")*1;

文字列切り取り

SELECT SUBSTR('pass123',1,4);
pass
SELECT SUBSTR('pass123',-2,2);#後ろから切り取る
23

型の確認

SELECT TYPEOF($col) FROM $table;
integer

マッチするか?

SELECT GLOB('03-*','03-9999-9999');
1
SELECT GLOB('02-*','03-9999-9999');
0

時刻処理

SELECT DATETIME('now');
2006-07-17 16:13:50
SELECT TIME('now');
16:14:29
SELECT DATE('now');
2006-07-17
SELECT CURRENT_TIMESTAMP;
2006-07-17 16:19:59
SELECT CURRENT_TIME;
16:21:37
SELECT CURRENT_DATE;
2006-07-17

日本時間の取得

SELECT DATETIME('now') , DATETIME('now', 'localtime');
2006-07-17 16:54:36|2006-07-18 01:54:36

時刻変換

SELECT JULIANDAY('2000-01-01 00:00:00');
2451544.5
SELECT STRFTIME('%Y-%m-%d %H:%M:%S','2000-01-01 12:34:56');
2000-01-01 12:34:56

その他日付加算とか

SELECT DATETIME('2000-01-01 00:00:00', 'weekday 1');
2000-01-03 00:00:00
SELECT DATETIME('2000-01-01 00:00:00', '-1 year');
1999-01-01 00:00:00
SELECT DATETIME('2000-01-01 00:00:00', '+09:00:00');
2000-01-01 09:00:00
SELECT DATETIME(946684800,'unixepoch');
2000-01-01 00:00:00

ランダムでとりだす

SELECT * FROM $table ORDER BY rand() LIMIT 0,10