php - MySQL 大于 microtime 时间戳

标签 php mysql microtime

我有一个 PHP 脚本在 MySQL 数据库中插入行。每行都有一个字段“created_at”,其中填充了 PHP 函数 microtime(true) 的值,并作为 double 值插入。 (微秒,因为我需要比秒更精确的东西)

我有另一个 PHP 脚本,它根据 created_at 字段选择行。

当我继续并像这样选择时: SELECT * FROM `ms_voltage` WHERE created_at > 1302775523.51878 我收到一个结果集,第一行是 created_at 的 exactly that value 的行。

这是在我的 PHP 脚本中以及在手动执行查询时从 PhpMyAdmin 中发生的。但并非总是如此,并非针对每个值。真的只是偶尔一次。

这怎么可能?我没有要求大于/等于,我想要严格大于。 我是否忽略了一些与类型相关的东西?

最佳答案

是的,浮点运算有时可以做到这一点。要理解其中的原因,认识到正如并非所有数字都可以以 10 为基数准确表示一样,也不是所有数字都可以以 2 为基数准确表示。

例如,“1/3”可以以 10 为基数写为 0.33333 或 0.33334。两者都不是真正的“正确”;他们只是我们能做的最好的。以 10 为基数的“DOUBLE”可能是 0.3333333333 或 0.3333333334,这是数字的两倍,但仍然不“正确”。

最好的选择是使用 DECIMAL 值,或使用 INT 值(然后将您的实际值乘以 10000 或 100000 以获得将您关心的十进制数字转换为该 int)。

关于php - MySQL 大于 microtime 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5663504/

相关文章:

php - MySQL查询以减少服务器负载

php - laravel 从数据库中获取 microtime

php - 在 Laravel 更新查询中使用数组

php - 当 table1 中删除行时,在 table2 中插入行

php - CDbCriteria 参数绑定(bind)

mysql - 使用云 SQL 从 MySQL 5.5 迁移到 GAE : Microtime support?

mysql - 存储哈希值或生成哈希值的 bigint 变量哪个更好

php - MAMP 是否应该将::1 作为 localhost 上的 IP 返回?

php - 在 MySQL 准备语句的 WHERE 子句中使用通配符

mysql - SQLyog如何与MySQL通信?