今日の日付から開始して時間をさかのぼって、それらのうちのいくつが連続しているかを計算するクエリを作成したいと思います (つまり、チェーンが切れるまでに何日連続しているかを調べます)。同じ日付は、DB で 1 回だけ発生します。
例 (今日の日付はここでは 2012-07-15 です):
2012-07-14
2012-07-13
2012-07-10
= 2
2012-07-14
2012-07-13
2012-07-12
2012-07-10
2012-07-09
= 3
今日の日付から開始して時間をさかのぼって、それらのうちのいくつが連続しているかを計算するクエリを作成したいと思います (つまり、チェーンが切れるまでに何日連続しているかを調べます)。同じ日付は、DB で 1 回だけ発生します。
例 (今日の日付はここでは 2012-07-15 です):
2012-07-14
2012-07-13
2012-07-10
= 2
2012-07-14
2012-07-13
2012-07-12
2012-07-10
2012-07-09
= 3
これはSQLサーバーで行われます。mysql構文に変換してください
select count(*) from
(select dateval,DATEDIFF(day,dateval,'2012-07-15') day_diff,
ROW_NUMBER() over (order by dateval desc) as rownum from test_11 )a
where a.rownum=a.day_diff
関数strtotime()を使用して、日付のtime()値を取得できます。
<?php
$userDate = "2012-07-14";
$pastDate = strtotime($userDate);
$currentTime = time();
$secondsSince = round($currentTime-$pastDate);
$daysSince = $secondsSince/86400; // 86400 being the seconds in a day
$preciseNumDays = sprintf("%.2f", $daysSince);
echo $preciseNumDays;
?>
過去の日付からの日数を計算する単純なスクリプトを作成しました。日数の配列をループして、各日付がループを通過してからの日数を取得できます。