mysql时间索引和格式探讨_mysql 时间索引-程序员宅基地

技术标签: mysql  数据库  

mysql时间

背景

前几天朋友发了一个问题

-- 表结构 type/status/create_time
-- type区分度比status高,应该如何加索引

1. type
2. type status create_time
3. type create_time

几个人讨论后有个人说不需要create_time,说create_time只有在 = 才生效
但按我自己的理解是create_time也可以走索引范围查询
因此搜了一些资料加深自己的理解

日期索引

先说结论,日期索引是可以走范围查询的
如下展示了mysql中单索引和联合索引的使用

我主要是纠结联合索引的画法
后面参考了CSDN的一篇文章

而取舍就是是否需要再加一个status
即(type status create_time) 和 (type create_time)
由于status区分度不高,实际上可以不加
加了就是耗费点空间,按我目前的知识是这么理解的

几种时间

类型 格式 范围
Date YYYY-MM-DD ‘1000-01-01’ to ‘9999-12-31’
DATETIME YYYY-MM-DD hh:mm:ss.000000 ‘1000-01-01 00:00:00’ to ‘9999-12-31 23:59:59’
TIMESTAMP YYYY-MM-DD hh:mm:ss.000000 ‘1970-01-01 00:00:01’ UTC to ‘2038-01-19 03:14:07’ UTC

timestamp

timestamp是携带时区的,存储时以UTC存储
mysql存储timestamp时会转换为UTC存储,取出来的时候会恢复成当前服务器的TimeZone
默认下time zone是服务器的时间
JDBC中,我们可以给每个连接设置time zone
如果你存进数据库后,修改了连接的serverTimeZone,那么取出来的值也会不一样
比如在GMT+8时,取出来的值是2022-7-8 08:57:35
那么GMT+6时取出来的值是2022-7-8 06:57:35

注意DATETIME不携带时区

timestamp最大支持2038年是因为Int最大2147483647

其他

  • myql 8.0.19后可以给TIMESTAMP or DATETIME在表中指定time zone offset
  • 非法的DATE, DATETIME, or TIMESTAMP会被转化为0,如果SQL mode 支持NO_ZERO_DATE的话
  • mysql 8.0.22后可以通过CAST和at time zone将timestamp转换成datetime
-- mysql会自动识别一些格式的时间
-- 等价于create_time > '2022-07-01'
SELECT * FROM demo WHERE create_time > '22:07:01';
-- 等价于create_time > '0000-00-00',因为50不是一个合法的月份
SELECT * FROM demo WHERE create_time > '22:50:01';
-- create_time为timestamp类型,转换为DATETIME
SELECT *, CAST(create_time AT TIME ZONE INTERVAL '+00:00' AS DATETIME) ut FROM time_demo

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_29656325/article/details/125892268

智能推荐

1.(地图资料篇)地图一些重要网站_mapshaper.org-程序员宅基地

文章浏览阅读565次。地图之家总目录(订阅之前请先查看该博客)地图之家:cesium+leaflet+echart+地图数据+地图工具等相关内容的介绍1、geojson与shape格式在线互转https://mapshaper.org/2、全国geojson数据下载http://datav.aliyun.com/tools/atlas/index.html#&lat=31.769817845138945&lng=104.29901249999999&zoom=43、免费的3D模型下载ht._mapshaper.org

使用Python访问Windows共享文件和文件夹内容,三个步骤五分钟搞定_python访问带密码的共享文件夹-程序员宅基地

文章浏览阅读3.8k次。在网上找了好久,大部分都是坑人的,还是凭借我自己的聪明才智,才发现了这个正确访问共享文件目录的姿势,哈哈哈。_python访问带密码的共享文件夹

高效物联网连接技术创新:ECWAN边缘协同自组网的未来——基于ChirpLAN窄带扩频技术的无线混合组网-程序员宅基地

文章浏览阅读802次,点赞16次,收藏7次。基于ChirpLAN窄带扩频技术的无线混合组网协议ChirpLAN,ChirpLAN是基于其自有的具有完全自主知识产权的ChirpIOT系列产品所推出开源的P2P或星型无线局域网络协议。ChirpLAN与LoraWAN比较类似,具有通信安全,组网方便,终端功耗低,通信距离远等特点,广泛适用于智能工厂、智能抄表、智慧城市、智慧仓储等物联网应用场景。ECWAN是一种创新性的无线组网架构,它融合了不同的无线技术,包括Chirp技术,兼容物联网的组网协议ChirpLAN,以实现多种应用需求。这种智能计量插座通过。

expect for java_Linux expect 用法-程序员宅基地

文章浏览阅读300次。expect是建立在tcl基础上的一个工具,它用来让一些需要交互的任务自动化地完成。因为expect是基于tcl的,所以需要你的系统中安装有tcl检查是否安装tcl,expect[root@master shell]# whereis tcltcl: /usr/lib64/tcl8.5 /usr/share/tcl8.5如果没有安装,使用yum安装:yum install -y tclyum in..._expect 启动java服务

1.2 极限的性质【极限】_保号性为什么不能加等号-程序员宅基地

文章浏览阅读906次,点赞3次,收藏6次。极限的性质【极限】_保号性为什么不能加等号

UrlEncodedFormEntity 提交中文数据 接收到的是乱码_urlencodedformentity 乱码-程序员宅基地

文章浏览阅读868次。UrlEncodedFormEntity 提交中文数据 接收到的是乱码_urlencodedformentity 乱码

随便推点

COMP4300/8300 Parallel Systems Assignment 1, 2024-程序员宅基地

文章浏览阅读605次,点赞29次,收藏13次。【代码】COMP4300/8300 Parallel Systems Assignment 1, 2024。

book地址-程序员宅基地

文章浏览阅读3.2k次。http://www.study51.com/detail.asp?ArtId=218电脑书籍下载网站集锦(转载之福建电脑用户社区)我们爱技术-IT人的世界 http://www.tech521.com/main.asp泰神电脑书屋:http://www.taishen.net/ebook/编程先锋教程:http://wlbookwl.myrice.com/jck.htm绿岛教程:http://l

计算机网络中的分组交换是什么,什么是分组交换-程序员宅基地

文章浏览阅读4.9k次,点赞2次,收藏7次。分组交换(Packed Switching)也称为包交换(Packet Switching),同样也属于存储-转发方式,是现代计算机网络的技术基础。分组交换网的出现标志着现代电信时代的开始。分组交换技术的出现克服了报文交换中传输延迟大的问题。由于分组具有统一的格式、长度较短并且长度限定在一定范围内,便于在中间节点设备(如路由器)上存储并处理,分组在中间交换设备的主存储器中停留很短的时间,一旦确定了..._.什么是分组交换?分组交换包括哪几种方式

微信支付_微信支付 使用分做为单位-程序员宅基地

文章浏览阅读1.1k次,点赞4次,收藏2次。@啊湛详细记录app微信支付教程使用前说明主要技术:前端uni-app,后端spring-boot1.微信开放平台微信开放平台是商户APP接入微信支付开放接口的申请入口,通过此平台可申请微信APP支付。从商户平台中可以获取AppID和设置AppSecret平台入口:open.weixin.qq.com2.微信商户平台微信商户平台是微信支付相关的商户功能集合,包括参数配置、支付数据查询与统计、在线退款、代金券或立减优惠运营等功能。从商户平台中可以获取证书,api密钥,商户ID(提现功能才_微信支付 使用分做为单位

手动从注册表添加“从这打开CMD”命令_注册表添加cmd参数-程序员宅基地

文章浏览阅读684次。通过运行注册表编辑器来进行手动添加相关信息,达到在按住shift键后右键可实现打开“从这打开CMD”命令。_注册表添加cmd参数

Unified-IO 2: Scaling Autoregressive Multimodal Models with Vision, Language, Audio, and Action-程序员宅基地

文章浏览阅读398次,点赞9次,收藏9次。A: 根据论文内容,Unified-IO 2主要通过以下几点解决了构建通用多模态模型的问题:1. 统一的模型架构:使用一个Transformer的encoder-decoder结构处理所有模态输入输出,通过将不同模态映射到统一的token序列来实现。通过这些方法,Unified-IO 2在不依赖外部模型或模块的情况下,直接从零开始训练,学习到了强大的多模态表示,解决了多模态理解与生成的问题。总体来说,这篇论文提出了一个统一的多模态模型,通过大规模数据和指令微调,实现了在多个模态任务上的强性能。_unified-io 2: scaling autoregressive multimodal models with vision, language

推荐文章

热门文章

相关标签