Mysql查询的日期时间转换

时间:2017-12-20 09:32:34

标签: php date time

如何转换此日期格式:

  

2017-12-20 09:26:03

要:

  

2017-10-05T09:31:00.000Z

我以

格式从 mysql db 获取日期值

2017-10-05T09:31:00.000Z

在我的PHP块中,我以格式

获得$ this-> date-> gmtDate()

2017-12-20 09:26:03

。在我的查询中,我必须从数据库列 greate r中获取值,而不是当前日期时间。如果某人可以理清如何转换日期格式,我可以从日期列中获取值。

我的查询是:

$date = $this->date->gmtDate();          
 $collection = $this->collectionFactory->create()
  ->addFieldToFilter('is_active', 1)
  ->addFieldToFilter('_end_date', array('gteq' => $date)) 

4 个答案:

答案 0 :(得分:1)

请使用此...

$originalDate = "set your date ...";
$newDate = date("Y-m-d h:i:s", strtotime($originalDate));

答案 1 :(得分:0)

使用SQL函数 DATE_FORMAT ,使用params for SELECT。

请参阅https://www.w3schools.com/sql/func_mysql_date_format.asp

或者将日期作为 datetime 类型存储在数据库中。

答案 2 :(得分:0)

  

数据库列大于当前日期时间

MySQL了解GMT日期时间:

// Using PDO
$stmt = $db->prepare("SELECT * FROM someTable WHERE dateColumn > ?");

$stmt->execute(array( $this->date->gmtDate() ));

while ($tuple = $stmt->fetch()) {
    ... do something with the fetched rows
}

然而,在这个的情况下:

  

我必须从数据库列中获取大于当前日期时间

的值

...你甚至根本不需要PHP,因为在NOW()函数的MySQL中可以使用“当前日期时间”:

SELECT * FROM someTable WHERE dateColumn > NOW()

答案 3 :(得分:0)

Z基于时区UTC,并在ISO-8601中定义,您需要。

在转换为实际格式之前,您需要转换为UTC:

$date = new DateTime();
$date->setTimeZone(new DateTimeZone('UTC'));
echo $date->format('Y-m-d\TH-i-s.\0\0\0\Z');

然后你可以比较上面的格式字符串。