人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

日付形式のデータをintergerに格納する方法を教えてください。
date型が扱えないデータベース(sqlite)があり、日付データの移行で困っています。どうやら、1199488339が2008/01/05らしいのですが、
どういう計算で値を出しているのかわかりません。

●質問者: kuruma_neko
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:SQLite データ データベース 計算
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● so-asano
●35ポイント

> どうやら、1199488339が2008/01/05らしいのですが、

> どういう計算で値を出しているのかわかりません。

上記の数字は、1970年1月1日00時00分00秒 GMT からの経過秒数だと思う(php の設定によって異なったりもするけど、ざっと計算してみた感じだと、多分そうだと思う)。

参考 url を見て、 date 関数で整形した日付を表示したり、mktime 関数で日時を作ったりするとよいかと。

http://php.plus-server.net/ref.datetime.html


2 ● bayan
●35ポイント

1199488339 はUNIXタイムスタンプ(※)と思われます。

※「Unix epoch(1970年1月1日 00:00:00 GMT))からの通算秒」


sqlite とのことで、ひょっとしてプログラム言語にPHPをお使いでしょうか?

であれば日付・時刻関数で相互変換ができると思います。

<?php
// タイムスタンプから YYYY/MM/DD hh:mm:ss 書式化にする
// http://www.php.net/manual/ja/function.date.php
echo date("Y/m/d H:i:s",1199488339);
?>
2008/01/05 08:12:19

<?php
// 日付の文字列からタイムスタンプにする
// http://www.php.net/manual/ja/function.strtotime.php
echo strtotime("2008/01/05 08:12:19")."\n";
echo strtotime("2008-01-06 00:00:00")."\n";
?>
1199488339
1199545200
<?php
// 時分秒月日年...を引数で指定してタイムスタンプを得る
// http://www.php.net/manual/ja/function.mktime.php
// 2008/01/01 00:00:00
echo strtotime(0,0,0,1,1,2008)."\n";
?>
1199113200

また日付形式のデータですが、 integer で格納するほかに、

'2008/01/05 08:12:19' のように文字列で格納してしまう

というのも手だと思います。

(要求やら仕様やらと照らし合わせて可能であればですが)


なお、タイプスタンプを32bit符号付き整数で扱う環境だと2038年以降の日付を扱う際に問題が生じると思うので、先々まで使うシステム or 未来の日付を扱うシステムでは、PEAR::Date 等の使用を検討された方がいいかもしれません。

http://codezine.jp/a/article/aid/1816.aspx

sqlite は本格的に触ったことがないので、はずしていたらすみません。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ