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

2022-08-30 23:03:06

我正在使用从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 使用 where 子句和 Insert into。
查询必须是更新....设置 ... = ...哪里。。。。
但接受的答案是使用 WHERE 子句中时间的正确方法。


答案 1

这应该是全部:

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

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


答案 2

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

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

这将生成类似于以下内容的字符串

2011-08-18 16:31:32

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

有关详细信息以及设置其返回值的格式的其他方法,请参阅日期函数的手册。

编辑

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

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

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


推荐