SQLを使ってFirefox 3の履歴情報を取得する

杉山貴章(オングス)
2008-10-23 17:00:00
  • このエントリーをはてなブックマークに追加

履歴情報にアクセスするSQL文

 Placesシステムでは履歴に関するデータはmoz_historyvisitsテーブルに、URLなどはmoz_placesテーブルに格納されている。リスト1のようなシンプルなSQL文で、これらのデータを結合して取得することができる。これは履歴のidと訪問時間、サイトのタイトルとURLを取得した例だ。

リスト1 履歴のidと訪問時間、サイトのタイトルとURLを取得するSQL

SELECT h.id, p.title, p.url, h.visit_date 
       FROM moz_places p, moz_historyvisits h 
           WHERE p.id = h.place_id ORDER BY h.id;

 このSQL文をSQLite Managerで実行すると、図1のような結果になる。

図1 SQLite ManagerでSQL文を実行して結果を取得する 図1 SQLite ManagerでSQL文を実行して結果を取得する

 訪問時間を表すvisit_timeフィールドの値はPRTime型なので、このままでは正確な時間を把握できない。PRTimeの値をローカルな日時表示に変換したい場合は、datetime関数を使ってリスト2のようにすればよい。SQL文の中でリスト3のように記述できる。

リスト2 PRTimeからローカルな日時への変換

datetime(PRTIME_DATA/1000000, 'localtime', 'unixepoch')

リスト3 訪問時間をローカルな日時表示に変換して表示する

SELECT h.id, p.title, p.url, 
       datetime(h.visit_date/1000000, 'localtime', 'unixepoch') AS 'visit_time' 
           FROM moz_places p, moz_historyvisits h 
               WHERE p.id = h.place_id ORDER BY h.id;

 SQLiteではstrftime('%s', 'now')とすることでUNIXタイムスタンプ形式の現在時刻の値を取得することができる。特定の期間に訪問した履歴データを取得したい場合はこれを利用すると便利だ。リスト4は5日前から現在までの履歴を取得する例である。

リスト4 5日前までの履歴データを取得する

SELECT h.id, p.title, p.url, 
       datetime(h.visit_date/1000000, 'localtime', 'unixepoch') AS 'visit_time' 
           FROM moz_places p, moz_historyvisits h 
               WHERE p.id = h.place_id 
                     AND visit_date > (strftime('%s', 'now') - 60*60*24*5) * 1000000 
               ORDER BY h.id;

 今回で紹介したのは非常にシンプルなSQL文だけだが、Placesのデータベースはブックマークデータなども有しているので、SQLを駆使することで様々な用途への活用が考えられるだろう。

  • 新着記事
  • 特集
  • ブログ
このサイトでは、利用状況の把握や広告配信などのために、Cookieなどを使用してアクセスデータを取得・利用しています。 これ以降ページを遷移した場合、Cookieなどの設定や使用に同意したことになります。
Cookieなどの設定や使用の詳細、オプトアウトについては詳細をご覧ください。
[ 閉じる ]