MySQLに日付を登録する。
フィールドタイプは「datetime」で、以下のようになる。
「2006-08-06 07:00:00」
で、これをPHPでタイムスタンプに変換し、さらに「20060806」のように表記するには、何とするやずよ?と、しばらく考えていた。
で、最初に行っためんどくさい処理が「substr( )」関数を使った場合の以下。
/* ここから
※ $row[ARUHI] → MySQLから受け取るデータ。「2006-08-06 07:00:00」
$aruhi_year=substr($row[ARUHI],0,4);
$aruhi_month=substr($row[ARUHI],5,2);
$aruhi_day=substr($row[ARUHI],8,2);
$aruhi_time=substr($row[ARUHI],11,2);
$aruhi_minute=substr($row[ARUHI],14,2);
$aruhi_mktime=mktime($aruhi_time,$aruhi_minute,0,$aruhi_month,$aruhi_day,$aruhi_year);
$aruhi_nichiji=date("Ymd",$aruhi_mktime);
ここまで*/
という具合だ。
「substr( )関数」は文字列の一部を抽出する関数らしい。
「$row[ARUHI],0,4」ではつまり「文字列の最初(0)から4文字(4)を取り出す」という意味となる。
それを利用して、年・月・日・時・分をそれぞれ抽出し、タイムスタンプに変換してから「date( )」関数で日付に変換している。
手間、かかり過ぎである・・・。
これだとソースが複雑でわかりにくい。
何とかならんのか?
そこで「strtotime( )」関数を発見。
「strtotime( )」関数は英文形式の日付をタイムスタンプに変換する関数らしい。
で、これを使って先程のソースを書き換えてみると以下のように簡略化することができた。
/* ここから
※ $row[ARUHI] → MySQLから受け取るデータ。「2006-08-06 07:00:00」
$aruhi_mktime=strtotime($row[ARUHI]);
$aruhi_nichiji=date("Ymd",$aruhi_mktime);
ここまで*/
おぉ!
すばらしい!
どうせ出力結果が同じなら、簡単に記述できる方が楽だし、今後の修正もやりやすいはずだ。
ぬ!
もしやMySQLの段階でタイムスタンプに変換することも可能なのでは・・・。
むぅ・・・。
わがらん。
という具合に、まだまだ精進しなければいけない段階である。