【发布时间】:2016-04-02 20:40:42
【问题描述】:
我正在为一件事而苦苦挣扎。我正在尝试使用 SQL 计算某个日期是多少天前。我的数据库中的日期可以有两种格式:
Aug 28 2014, 17:17:34 CEST
Dec 29 2015, 01:03:14 CET
这是不同日期的两个示例。注意“CET”和“CEST”。
但无论如何,我将如何在 SQL 查询中继续计算呢?我设法在 PHP 中做到这一点,但我想在 SQL 查询本身中做到这一点(如果可能的话)。因为它会节省大量的内存使用。我尽量让我的工作尽可能快。我只想访问仅在过去 2-3 天左右登录的用户的数据。当然,我可以创建一个SELECT * FROM users,然后运行 PHP 来检查日期。但是有没有办法在 SQL 中做到这一点?点赞:SELECT * FROM users WHERE [lastlogin < 2 days]
这是我当前的 PHP 代码。我真的很想在 SQL 中做到这一点。顺便说一句,我的专栏目前是文本。由于某种原因,日期时间不适用于该格式。
$lastlogin = $row['lastlogin'];
$lastlogin = str_replace("\xc2\xa0",' ',$lastlogin);
$Date = $lastlogin;
$Date = substr($Date, 0, strpos($Date, " CE"));
$now = date('Y-m-d');
$datetime1 = new DateTime($Date);
$datetime2 = new DateTime($now);
$interval = $datetime1->diff($datetime2);
$difference = $interval->format('%a days ago');
echo "Last login was: " . $difference;
【问题讨论】:
-
是的,但请检查我的格式。格式是这里的大问题。该死的
CET和CEST毁了它
标签: php mysql sql date datetime