我想知道是否可以将SELECT si.*, sn.first_name, sn.last_name, so.songname, so.date, so.category
FROM
singer si
INNER JOIN singerNote sn
ON sn.singer# = si.singer#
INNER JOIN songs so
ON so.singerlabel = si.singerlabel
AND NOT EXISTS (
SELECT 1
FROM songs so1
WHERE so1.singerlabel = si.singerlabel AND so1.date > so.date
)
转换为time ago
例如date time
至5 years, 9 months, 1 week, 5 days ago
我一直在使用此2013-05-01
来将function
转换为date
,但如何进行相反操作!
time ago
用法:
function time_elapsed_string($datetime, $full = false) {
$now = new DateTime;
$ago = new DateTime($datetime);
$diff = $now->diff($ago);
$diff->w = floor($diff->d / 7);
$diff->d -= $diff->w * 7;
$string = array(
'y' => 'year',
'm' => 'month',
'w' => 'week',
'd' => 'day',
'h' => 'hour',
'i' => 'minute',
's' => 'second',
);
foreach ($string as $k => &$v) {
if ($diff->$k) {
$v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
} else {
unset($string[$k]);
}
}
if (!$full) $string = array_slice($string, 0, 1);
return $string ? implode(', ', $string) . ' ago' : 'just now';
}
答案 0 :(得分:1)
为什么不能这样做:
//uses and modifies today's date 2019-02-13
$date = (new DateTime)->modify('-5 years -9 months -1 week -5 days')->format('Y-m-d');
echo $date."\n";
//takes the modified data and does the reverse
$date = (new DateTime($date))->modify('+5 years +9 months +1 week +5 days')->format('Y-m-d');
echo $date."\n";
输出
2013-05-01
2019-02-13 //today
只要您创建该字符串以符合相对日期格式,
http://php.net/manual/en/datetime.formats.relative.php
我不明白为什么您不能将其重新插入datetime类。