经常有人问及:在 MySQL 中如何获得毫秒?于是就写篇日志总结下。
MySQL 较新的版本中(MySQL 6.0.5),也还没有产生微秒的函数,now() 只能精确到秒。 MySQL 中也没有存储带有毫秒、微秒的日期时间类型。
但,奇怪的是 MySQL 已经有抽取(extract)微秒的函数。例如:
select microsecond('12:00:00.123456'); -- 123456
select microsecond('1997-12-31 23:59:59.000010'); -- 10
select extract(microsecond from '12:00:00.123456'); -- 123456
select extract(microsecond from '1997-12-31 23:59:59.000010'); -- 10
select date_format('1997-12-31 23:59:59.000010', '%f'); -- 000010
尽管如此,想在 MySQL 获得毫秒、微秒还是要在应用层程序中想办法。假如在应用程序中获得包含微秒的时间:1997-12-31 23:59:59.000010,在 MySQL 存放时,可以设计两个字段:c1 datetime, c2 mediumint,分别存放日期和微秒。为什么不采用 char 来存储呢?用 char 类型需要 26 bytes,而 datetime + mediumint 只有 11(8+3) 字节。
毫秒、微秒名词解释:
毫秒:millisecond -- 千分之一秒
微秒:microsecond -- 一百万分之一秒
1 秒 = 1000 毫秒;1 毫秒 = 1000 微秒
分享到:
相关推荐
DateTime类型在MySQL中默认支持微秒级别的精度,即可以存储到小数点后六位。但在您的描述中,字段长度设置为0,这可能导致MySQL自动地将其四舍五入到最近的毫秒。例如,入库前的时间是2020/06/11 07:41:02.900000000...
- 当数据查询量极大而更新较少、实时性要求不高、数据规模有限时,考虑使用单一排序序列进行折半查找以获得最高效查询。 **1.4 实战案例** - **案例一: IP地址反查** - **资源**: IP地址对应表。 - **目标**: ...
17. **时间数据类型精度**:MySQL 5.6开始支持秒级别的时间数据类型精度,从MySQL 5.7开始支持毫秒,再到更高级别的微秒。 18. **binlog_row_image参数**:为了减少IO吞吐,binlog_row_image设置为`Minimal`仅记录...
这意味着当你存储的时间值带有小于秒的精度,比如毫秒或微秒时,这些值会被四舍五入到最接近的秒。这种行为可能会导致意外的结果,尤其是在处理精确时间记录时,可能会出现记录被错误地分配到不同的日期。 为了更好...
MySQL数据库在处理日期和时间数据时提供了多种数据类型,包括日期类型和时间...在MySQL 5.x及以上版本中,这些日期时间类型仅支持到秒级别,不包含毫秒或微秒。如果你需要更高的精度,可能需要在应用程序层面进行处理。
这里先引用一句话,从内存中读取一个数据的时间消耗是微秒级别,而从普通硬盘上读取一个数据是在毫秒级别,二者相差3个数量级。可见,想对MySQL数据库进行优化,合理调配缓存参数显得更为直接 表缓存 相关...
需要注意的是,截至2008年,MySQL的时间类型只支持到秒级精度,不包括毫秒或微秒。如果你需要更高精度的时间记录,可能需要寻找其他解决方案或者使用额外的编程逻辑来实现。 在设计数据库时,正确选择日期和时间...
- 监控查询性能,确保所有查询都在毫秒级完成。 - 定期检查慢查询日志,对于耗时超过0.01秒的查询进行优化。 #### 三、MySQL运维优化 ##### 1. 存储引擎的选择与配置 - **存储引擎类型**:不同的存储引擎(如...
- **微秒级优化**:对于高并发、高流量的应用场景,即使是毫秒级别的延迟也需要被优化。例如,通过合理设计索引和优化查询语句,可以将查询时间降低到微秒级别。 #### 理解执行状态 - **SQL执行过程**:了解SQL...
DATETIME 类型的值可以在尾部包含一个毫秒部分,精确度最高到微秒(6 位数)。 Timestamp 数据类型 Timestamp 数据类型用于保存同时包含日期和时间两部分的值。它提供自动初始化和更新到当前的日期和时间的功能,...
### MySQL时间类型详解:datetime、bigint、timestamp 在MySQL中,根据不同的应用场景和需求,可以选择多种方式来存储日期和时间信息。本篇文章将详细介绍三种常用的时间类型:`datetime`、`bigint` 和 `timestamp`...
例如,在上述描述中,前端分页基于时间戳,而时间戳通常只精确到毫秒,因此,当Django的DateTimeField包含微秒时,可能导致分页错误。 问题的核心在于Django的DateTimeField在数据库中保存的日期时间包括了微秒部分...
这样就可以得到一个准确的毫秒级时间戳。具体实现代码如下: ```php function getMillisecond() { list($t1, $t2) = explode(' ', microtime()); return (float)sprintf('%.0f', (floatval($t1) + floatval($t2))...
除此之外,MySQL 还提供了 Extract(选取)函数,允许我们从日期时间字段中提取特定部分,如年、季度、月、日、小时、分钟、秒,甚至是微秒。例如,我们可以设置一个日期时间变量 `@dt`,然后使用如下方式提取各部分...
而我们知道,从内存中读取一个数据库的时间是微秒级别,而从一块普通硬盘上读取一个IO是在毫秒级别,二者相差3个数量级。所以,要优化数据库,首先第一步需要优化的就是IO,尽可能将磁盘IO转化为内存IO。本文先从...
它使用`microtime()`函数获取微秒级的时间戳,然后通过计算前后时间戳的差值来得到查询执行所花费的时间。这里的`runtime(1)`在查询结束后调用,以输出执行时间。 ```php function runtime($mode=0) { static $t; ...