mysql执行时间为负数的原因分析
<?php
list($usec, $sec) = explode(' ', microtime());
$timer = (float)$usec + (float)$sec;
mysql_query($query, $active_db);
list($usec, $sec) = explode(' ', microtime());
$stop = (float)$usec + (float)$sec;
$diff = $stop - $timer;
?>
$stop 和 $timer都是转化后得到的浮点数,大多数情况下,echo $stop 和 echo $timer得到的结果用肉眼观察是相同的,但是它们在计算机中的存储并不相同,所以结果不为0,也有可能为负。
php手册中提示:
浮点数精度:
显然简单的十进制分数如同 0.1 或 0.7 不能在不丢失一点点精度的情况下转换为内部二进制的格式。这就会造成混乱的结果:例如,floor((0.1+0.7)*10) 通常会返回 7 而不是预期中的 8,因为该结果内部的表示其实是类似 7.9999999999...。
这和一个事实有关,那就是不可能精确的用有限位数表达某些十进制分数。例如,十进制的 1/3 变成了 0.3333333. . .。
所以永远不要相信浮点数结果精确到了最后一位,也永远不要比较两个浮点数是否相等。如果确实需要更高的精度,应该使用任意精度数学函数或者 gmp 函数。
相关推荐
-
mysql 卡死 大部分线程长时间处于sending data的状态
有台服务器,访问量挺大,每天近250w动态pv,数据库查询平均每秒近600次 另一台服务器,跑的程序跟这台一样,不过只有每天约40w动态pv 前段时间连续卡死过几次,当时的状态是 服务器没崩溃,数据库可正常登陆.只是所有的查询都卡在"sending data"状态,长时间无法执行完,这些简单的sql语句,有时候集中在A表上,有时候集中在B表上,同时还有一些卡死在locked状态或update状态 看mysql的说明,sending data状态表示两种情况,一种是mysql已经查询了数
-
mysql的日期和时间函数大全第1/2页
mysql> SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday).索引值符合 ODBC 的标准. mysql> SELECT DAYOFWEEK('1998-02-03'); -> 3 WEEK
-
mysql 显示SQL语句执行时间的代码
MySQL 的 SQL 語法調整主要都是使用 EXPLAIN , 但是這個並沒辦法知道詳細的 Ram(Memory)/CPU 等使用量. 於 MySQL 5.0.37 以上開始支援 MySQL Query Profiler, 可以查詢到此 SQL 會執行多少時間, 並看出 CPU/Memory 使用量, 執行過程中 System lock, Table lock 花多少時間等等. MySQL Query Profile 詳細介紹可見: Using the New MySQL Query Prof
-
mysql 时间转换函数的使用方法第1/2页
mysql 时间转换函数的用法 DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准. mysql> select DAYOFWEEK(2007-10-31); -> 4 WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, --6= 星期天). mysql> select WEEKDAY('2007-10-31 13:05:00'); -> 2 mysq
-
mysql 设置默认的时间值
所以以 复制代码 代码如下: create_time datetime default now() 的形式设置默认值是不可能的. 代替的方案是使用TIMESTAMP类型代替DATETIME类型. CURRENT_TIMESTAMP :当我更新这条记录的时候,这条记录的这个字段不会改变. CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP :当我更新这条记录的时候,这条记录的这个字段将会改变.即时间变为了更新时候的时间.(注意一个UPDATE设置一个列为它已
-
mysql 日期和时间函数
mysql> SELECT something FROM tbl_name WHERE TO_DAYS(NOW()) – TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday).索引值符合 ODBC 的标准. mysql> SELECT DAYOFWEEK('1998-02-03′); -> 3 WEEKDAY(date) 返回 date 的星期
-
mysql 日期和时间格式转换实现语句
这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准. mysql> select DAYOFWEEK('1998-02-03'); ->
-
mysql时间戳转成常用可读时间格式的两种方法
使用EXECL转换时间戳的公式为: 代码:=(xxxxxxxxxx+8*3600)/86400+70*365+19 使用MYSQL语句解释时间戳语法举例: 代码: SELECT FROM_UNIXTIME(1234567890, '%Y-%m-%d %H:%i:%S') 附:在mysql中,一个时间字段的存储类型是int(11),怎么转化成字符类型,比方存储为13270655222,需要转化为yyyy -mm-dd的形式 使用 FROM_UNIXTIME函数,具体如下: 代码:FROM_UNIX
-
MySQL日期数据类型、时间类型使用总结
MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围 ------------ --------- --------------------- ----------------------------------------- datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31
-
mYsql日期和时间函数不求人
对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型. 这里是一个使用日期函数的例子.下面的查询选择了所有记录,其date_col的值是在最后30天以内: mysql> SELECT something FROM table WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30; DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC
随机推荐
- 详解Spring Boot配置排序依赖技巧
- Python正则表达式教程之一:基础篇
- 深入理解PHP中mt_rand()随机数的安全
- Jquery多选框互相内容交换的实例代码
- 在 Angular2 中实现自定义校验指令(确认密码)的方法
- js获取内联样式的方法
- 进入dos的一个密码破解方法
- AJAX的跨域访问-两种有效的解决方法介绍
- 半小时精通正则表达式-精华版
- ES6新数据结构Map功能与用法示例
- js null,undefined,字符串小结
- 优化MySQL数据库中的查询语句详解
- MySQL常用聚合函数详解
- android中Intent传值与Bundle传值的区别详解
- 你应该知道的21个Java核心技术
- 微信小程序开发(一) 微信登录流程详解
- android Tween Animation属性设置方法实例
- Android应用中使用ViewPager和ViewPager指示器来制作Tab标签
- 全球路由DNS服务器
- python Spyder界面无法打开的解决方法