パソいろ パソコンやIT関連、周辺機器や開発のことなど

パソコンや開発、Linuxやデータベースのことなど

PHPで日付の差(日数)を求める
PHPで日付の差(日数)を求めるサンプルプログラム。
日付が文字列で渡される場合、スマートな解決方法?

<?php
$date1 = "2012/10/10";
$date2 = "2012/11/15";

$daydiff = (strtotime($date2)-strtotime($date1))/(3600*24);

echo $daydiff;
?>

実行結果:
36


今日(本日)の日時からの日差を求める

(strtotime(date("Y-m-d H:i:s"))-strtotime("2012/11/15"))/(3600*24)

うーん、今日の日付のdate型の環境変数とかあったような・・・?

【解説】
strtotime
Unix タイムスタンプ (1970年1月1日 00:00:00 UTC からの経過秒数)を求める

つまり文字列日付をUnixタイムスタンプ秒に変換し差分を求め、1日の秒数(3600*24)で割り経過日数を求めている。

wwwありをwwwなしに
例えばtoyota.jpは、www.toyota.jpって入力してもtoyota.jpにリダイレクトされる。
SEO的にはこのように、www有りと無しを混在させるより、どちらかに統一した方がいいらしい。


Apacheのhttpd.confを設定できる場合の例


ServerName www.example.com
Redirect permanent / http://example.com/




ロリポップなど.httaccessに記載する場合

RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.example\.com
RewriteRule (.*) http://example.com/$1 [R=301,L]



逆にwww無しをwww有りに
(amazon.co.jpなどはこのタイプ)

Apacheのhttpd.confを設定できる場合の例


ServerName example.com
Redirect permanent / http://www.example.com/



サブクエリ LEFT JOIN
サブクエリ(副クエリ)とLEFT JOIN(レフト ジョイン)のSQLサンプル

SELECT table1.*, count.count FROM table1 LEFT JOIN
 (SELECT table1_id, count(table1_id) FROM table2 WHERE 条件 GROUP BY table2.table1_id) as count
ON table1.id = count.table1_id WHERE 条件 ORDER BY 条件 OFFSET 条件 LIMIT 条件