单个查询SELECT NOW()然后格式化它和UPDATE值

时间:2017-08-03 07:55:25

标签: php postgresql datetime

是否可以在postgresql中使用单个查询执行以下操作?

$stmt = $db->prepare('SELECT NOW()');
$data = $stmt->execute();

$currentTime = new DateTime($data['now']);
$currentTime = $currentTime->format('Y-m-d H:i:s');

$stmt = $db->prepare('UPDATE my_table SET my_time = :time');
$stmt->execute(array('time'=>$currentTime);

我想做什么:

  • 我想在一个更新查询中执行所有操作(选择NOW()然后格式化并将其设置为新值)
  • 我需要使用函数NOW()而不是时间戳
  • 我需要节省没有时区的格式时间(' Y-m-d H:i:s')

2 个答案:

答案 0 :(得分:2)

在更新声明中使用

UPDATE my_table SET my_time = NOW()

您之前不必提取日期。您可以在更新语句中直接使用此MySQL函数。

如果Web服务器和mysql服务器在同一台服务器上,你也可以这样做,如果mysql格式不是你最喜欢的那样:

'UPDATE my_table SET my_time = '. date("Y-m-d H:i:s", time());

只需设置您想要的正确时区即可。

答案 1 :(得分:0)

您可以将此用于MySQL UPDATE my_table SET my_time = DATE_FORMAT(NOW(), "%Y-%m-%d H:%i:%s"),或者只使用您需要的任何格式查看此处的列表:https://www.w3schools.com/sql/func_mysql_date_format.asp

这适用于postgresql UPDATE my_table SET my_time = to_char(now(), 'YYYY-MM-DD HH24:MI:SS')并使用此https://www.postgresql.org/docs/9.1/static/functions-formatting.html