2011-11-07 8 views
0

私はmysqlデータベースに格納されている日付を持っていると私はワークアウトそうのような日からの日数は、PHPのstrtotimeと働いて何年?

ceil(time() - strtotime($account['joined'])/60/60/24 % 365); 

しかし、どのように私は年以来、年間出て作業することができますすることができますが後にあるため、時間の最高フォーマットであります何千年ということですか?

変数が1のようである:

2011-10-06 22:01:57 

おかげ

+0

あなたは '$ account ['joined']'値のサンプルを投稿できます – Mob

+0

うるう年はどうですか? –

答えて

1

使用date("Y")

<?php 
$time = strtotime("1 Jan 2001 1:11:11"); 
echo "Years since time: ".(date("Y") - date("Y", $time)); 

http://sandbox.phpcode.eu/g/220fe/1

+0

これを試してみてください、ありがとう – cgweb87

+0

これは分、時間、秒などで動作しますか?私の例よりも使用する方が良いですか? – cgweb87

1

あなたはいつもdate("Y", $timestamp)

を使用することができますし、あなたの問題のためにあなたがdate_diffを使用することができ、

$datetime1 = new DateTime('2009-10-11'); 
$datetime2 = new DateTime('2009-10-13'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 
2

あなたはタイムスパンを得るためにMySQLデータベースを使用することができます。

クエリでDATEDIFFを使用すると、現在の日付から結合日を差し引くことができます。これにより、このようにタイムスパンを得ることができます。

この関数は、ここで説明されています

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_datediffdate/time functionsビルトインを使用し、あなたはMySQLの側から計算を実行することができる場合、それは

+0

これについて考えましたが、私のウェブサイトはデータベース呼び出しに重く、オーバーヘッドの多くを占めていますが、phpはそうではありませんのでPHPを使用したいと思います:) – cgweb87

+1

データベース側でコーディングすると利点があります。すべてのものが1つのクロック(Webサーバーとは別の場合はデータベースのクロック)、トラフィックの最小化(パラメータの通過が少ない)、および高速なクエリに基づいているため、時間の計算に時間がかかります。多くの場合、ストアドプロシージャでステートメントを実行すると、クエリの処理速度を向上させることができます。 [リンク](http://stackoverflow.com/questions/208976/are-stored-procedures-faster-for-simple-queries) – shimofuri

0

に役立ちます願っています。たとえば、そのテーブルを想定したTは、日付列Dが含まれていると、あなたは、日数の面で現在の日付に対してそれを比較したい:

SELECT 
    TIMESTAMPDIFF(DAY, D, CURDATE()) AS 'days_elapsed' 
FROM T 

あなたは、次のいずれかにTIMESTAMPDIFFの最初の引数を変更することができます。FRAC_SECOND (マイクロ秒)、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、またはYEAR。

関連する問題