これを行う方法を検索して検索しましたが、非常に限られた情報しか見つかりませんでした。
double(25,8) 形式のフィールド「ttime」を含む MySQL テーブル「msgdb」があります (例の行 = 1352899856.95249200)。
フィールド「ttime」が<=今日の日付-5日である行を削除して、テーブルを定期的にクリーンアップする必要があります。
これらは、double から time への変換に関連して見つけることができた唯一の 2 行のコードですが、どちらも機能させることができません。
SELECT ADDDATE(ADDDATE(ADDDATE('1899-12-31 00:00:00',FLOOR(ttime)), INTERVAL -1 DAY),INTERVAL(MOD(ttime,1)*86400)SECOND) AS TrueDate FROM msgdb
select date('1899-12-31 00:00:00'+ INTERVAL ttime * 24*3600 SECOND) as date from msgdb
DELETE FROM を使用して正しい結果が得られることを確認する前に、まず以下のコードを使用して基準に一致する行を表示しようとしました。
$query = "select date('1899-12-31 00:00:00'+ INTERVAL ttime * 24*3600 SECOND) as date from msgdb";
$result = mysql_db_query ($dbname, $query, $link);
while($row = mysql_fetch_array($result)) {
echo $row['date'];
echo '<br>';
}
そしてまた
$query = "SELECT ADDDATE(ADDDATE(ADDDATE('1899-12-31 00:00:00',FLOOR(ttime)), INTERVAL -1 DAY),INTERVAL(MOD(ttime,1)*86400)SECOND) AS TrueDate FROM msgdb";
$result = mysql_db_query ($dbname, $query, $link);
while($row = mysql_fetch_array($result)) {
echo $row['TrueDate'];
echo '<br>';
}
しかし、どちらも何も返していません。
更新:わかりましたので、このコードを使用して:
$query = "select ttime from msgdb";
$result = mysql_db_query ($dbname, $query, $link);
while($row = mysql_fetch_array($result)) {
echo date('m-j-Y, H:i:s', $row[0]);
echo '<br>';
}
「ttime」フィールドを保存された値 1352899856.95249200 から 11-14-2012, 07:30:56 に変換することがわかります。
では、ttime が <=now - 5 日であるすべての行をテーブルから削除するにはどうすればよいでしょうか。