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

MySQLとPHPについて以下のテーブルがあるとします

テーブルuser
userid, pwd, date

上のuserテーブルのdateカラム(DATETIME型)にCURRENT_TIMESTAMPを使い日付を記録しています

このdateカラムの日付を取り出しPHPのプログラムで処理する際に1ヶ月日付を加算したいのですがどのようにしたらよいでしょうか

PHPでこの日付を加算する方法を教えてください

サンプルソースをいただけると助かります
一番参考になった回答をいただけた方に150P差し上げます

●質問者: jayz
●カテゴリ:ウェブ制作
✍キーワード:MySQL PHP USER カラム サンプルソース
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● kn1967
●300ポイント

(1)php側で計算する場合

$OldDate に日付が入っているとして、、、

1日単位での計算であればstrtotime関数が便利かもしれません。

$NewDate = strtotime($OldDate) + 24 * 60 * 60;

http://jp.php.net/strtotime

1ヶ月という話になると大の月や小の月、うるう年などが大変なので

mktime関数がよろしいでしょう。

$y = date('Y',$OldDate);

$m = date('n',$OldDate) + 1;

$d = date('j',$OldDate);

$h = date('G',$OldDate);

$m = date('i',$OldDate);

$s = date('s',$OldDate);

$NewDate = mktime($h,$m,$s,$m,$d,$y);

http://jp.php.net/manual/ja/function.date.php

http://jp.php.net/manual/ja/function.mktime.php


(2)MySQL側で計算させる場合

DATE_ADDという関数がありますのでMySQL側で計算させたほうが楽かもしれません。

SELECT (DATE_ADD(フィールド名,INTERVAL 1 MONTH)) AS 新しいフィールド名 FROM テーブル名

http://dev.mysql.com/doc/refman/4.1/ja/date-and-time-functions.h...

◎質問者からの返答

ありがとうございます

解決しました


2 ● Mook
●35ポイント

時間の計算はmySQL 側でクエリ時に計算してしまう方が簡単だと思います。

その場合、

SELECT DATE_FORMAT( DATE_ADD( date, INTERVAL 1 MONTH ), "%Y-%m-%d %H:%i:%S") AS afterOneMonth FROM user;

という形で afterOneMonth として、取得できます。


MySQL 日付と時間関数


もし、PHP で処理したい場合は、

SELECT DATE_FORMAT( date, "%Y-%m-%d %H:%i:%S") AS strDate FROM user;

としてデータを取得した後、下記のような関数で計算することになるかと思います。

(下記サンプルでは暫定的に文字列を渡してしています。)

<?
 print addOneMonth( "2007-06-10 11:23:46" )."<br>\n";
 print addOneMonth( "2007-12-10 11:23:46" )."<br>\n";

// 一ヶ月を加算する関数
function addOneMonth( $mySQLDate )
{
// PHP の時間(UNIX Time)に変換
 $phpTime = strtotime( $mySQLDate );

// 1ヶ月を加算
 $stamp = mktime(
 date( "h", $phpTime ), date( "i", $phpTime ), date( "s", $phpTime ) ,
 date( "n", $phpTime ) + 1, date( "j", $phpTime ), date( "Y", $phpTime ) );

// YYYY-MM-DD HH:MM:SS 書式で返す
return sprintf("%04d-%02d-%02d %02d:%02d:%02d\n",
 date( "Y", $stamp ), date( "n", $stamp ), date( "j", $stamp ),
 date( "h", $stamp ), date( "i", $stamp ), date( "s", $stamp ) );
}
?>

PHP date

PHP mktime

PHP strtotime

◎質問者からの返答

ありがとうございます

サンプルソース付きで非常にわかりやすかったです

関連質問


●質問をもっと探す●



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