在php中将字符串转换为MySQL时间戳格式

Posted

技术标签:

【中文标题】在php中将字符串转换为MySQL时间戳格式【英文标题】:Converting string to MySQL timestamp format in php 【发布时间】:2011-10-30 02:10:16 【问题描述】:

我正在使用从 android java 应用程序发送的字符串在 php 中编写查询。 查询类似于:

$insertSQL = sprintf("INSERT INTO app_DuckTag (taste) VALUES (%s) WHERE species=%s AND timestamp=%s",
                         GetSQLValueString($_POST['taste'], "text"),
                         GetSQLValueString($_POST['species'], "text"),
                         GetSQLValueString($_POST['timestamp'], "text"));

但我怀疑时间戳是否在 mysql 中存储为字符串。 我应该如何将字符串转换为 MySQL 中的时间格式? strtotime(string) php 函数将其转换为unix 时间。 但我猜 MySQL 以不同的方式存储它。谢谢。

编辑:这就是它在 MySQL phpmyadmin 中的显示方式:2011-08-16 17:10:45

编辑:我的查询是错误的。 Cannon 使用带有 Insert into 的 where 子句。 查询必须是 UPDATE .... SET ... = ... WHERE .... 但公认的答案是在 WHERE 子句中使用时间的正确方法。

【问题讨论】:

你是如何从安卓应用程序接收到它的? $_POST['timestamp'] = "2011-08-16 17:10:45"。希望这可以帮助。如果没有,请问我,我会发布它。 【参考方案1】:

这应该就是全部了:

date("Y-m-d H:i:s", strtotime($_POST['timestamp']));

如果你想检查时区等你应该使用 strftime 而不是 date

【讨论】:

【参考方案2】:

如果您可以将输入“字符串”(您尚未提供接收它的格式)转换为 Unix 时间戳值,则可以轻松地将其转换为 MySQL 日期时间格式,如下所示:

$mysqldatetime = date("Y-m-d H:i:s", $unixTimeStampValue);

这将产生一个类似于以下的字符串

2011-08-18 16:31:32

这是 MySQL datetime 格式的格式。如果您使用不同的时间格式,则date 函数的第一个参数将不同。

请参阅date 函数的手册以获取更多信息以及您可以格式化它返回的值的其他方式。

编辑

您正在接收以 MySQL 日期时间格式格式化的字符串。清理后,您可以将其直接插入数据库。对于 MySQL,它可能是一个“日期时间”数据类型,但对于 PHP,它只是一个字符串(就像你的整个 SQL 查询对 PHP 来说只不过是一个字符串)。

$timestamp = mysql_real_escape_string($_POST['timestamp']);

您应该能够安全地将其插入数据库的时间戳字段。

【讨论】:

我以完全相同的方式接收它,但作为一个字符串 - “2011-08-16 17:10:45” 会检查并通知您。我想如果我可以将它插入到时间戳字段中,那么我必须能够在 WHERE 子句中检查它是否相同。【参考方案3】:

mysql中有一个函数FROM_UNIXTIME。为什么不想使用它?

【讨论】:

因为我没有时间在 UNIX 格式。我完全按照我想要的方式拥有它,但是作为一个字符串。我接受了一个有效的答案。

以上是关于在php中将字符串转换为MySQL时间戳格式的主要内容,如果未能解决你的问题,请参考以下文章

怎么在Oracle中将时间戳转化为日期格式

如何在Oracle中将时间戳转化为日期格式

在presto MySQL中将时间戳转换为字符串?

在 JAVA 中将 Json dateTime 转换为字符串

在 Hive 中将字符串转换为日期/时间戳

PHP,从mysql加载时间戳并转换为时间前字符串