我正在使用从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以不同的方式存储它。谢谢。
编辑:我的查询错了。 Cannon使用带有Insert into的where子句。
查询必须是UPDATE .... SET ... = ... WHERE ....
但是接受的答案是在WHERE子句中使用时间的正确方法。
答案 0 :(得分:30)
这应该是全部:
date("Y-m-d H:i:s", strtotime($_POST['timestamp']));
如果你想检查时区,你应该使用strftime而不是date
答案 1 :(得分:3)
如果您可以将输入'string'(您没有提供它接收到的格式)输入到Unix时间戳值,您可以轻松地将其转换为MySQL日期时间格式,如下所示:
$mysqldatetime = date("Y-m-d H:i:s", $unixTimeStampValue);
这将产生类似于以下内容的字符串:
2011-08-18 16:31:32
MySQL datetime 格式的格式。如果您使用的是不同的时间格式,则date
函数的第一个参数将不同。
请参阅date函数的手册以获取更多信息以及格式化其返回值的其他方法。
修改强>
您正在接收以MySQL日期时间格式格式化的字符串。清理后,您可以将其直接插入数据库。对于MySQL,它可能是一个'datetime'数据类型,但对于PHP来说它只是一个字符串(就像你的整个SQL查询只不过是PHP的字符串一样)。
$timestamp = mysql_real_escape_string($_POST['timestamp']);
您应该能够安全地将其插入数据库中以获取时间戳字段。
答案 2 :(得分:1)
mysql中有一个函数FROM_UNIXTIME。你为什么不想用呢?