1.介绍
数据库时间日期常见存储类型,取出三者后,到后端或者前端均是字符串类型[其实在数据表中存储也是字符类型,不过是有固定格式约束的字符罢了], 也均可以使用int类型存储,使用代码二次转换. |
2.应用场景
存储数据到数据表时,选定字段类型, 如何选取合适的时间类型是必要的, 已经确定时间类型,需要转换为合适的字段类型也是在所难免。 如: 设计数据表时, 设计日期时间类型。 在已有数据表,转换日期时间类型。 |
3.学习
在数据库中一直有这三个时间类型有点搞不太清楚,总结如下: [定义] // 顾名思义 多数名称还是靠谱的, 顾名思义不是我们的错, 如果出现错误, 多数是因为命名的人考虑不周或者就是脑子一时进水.
[时间范围]
备注: utc, coordinated universal time,协调世界时,又称世界统一时间、世界标准时间、国际协调时间。 由于英文(cut)和法文(tuc)的缩写不同,作为妥协,简称utc。 常用日期函数以及转换[mysql中]
2、获取当前时间:
3、获取当前日期和时间
实验sql:
4、linux/unix时间戳 和 mysql时间日期类型之间的转换:
补充: 1. 验证: 到后端或者前端均是字符串类型 测试一: 代码 // 后端 postman测试接口 // 前端 测试二: 代码 // 后端 postman测试接口 // 前端 2. php 框架[kohana,已经衍生为其他框架]中,数据类型的对应转换。 其中: 包含 sql-92 / sql:1999 / sql:2003 / sql:2008 的标准 后续补充 ... |
4.问题/补充
1.数据表中字段类型mysql是如何区分?他们的本质是什么?
2.执行如下sql:// 建表sql: github - cystanford/sql_heros_data: sql课程-王者荣耀heros数据表
结果: 使用date函数的疑问: a. birthdate字段可能会有时间包含在里面,如2019-01-01 00:00:00,如果直接和2019-01-01比较是会失败的,用date函数可以提取出原始数据的日期部分, 将字段 birthdate 转化为日期类型再进行比较 q. 过滤上线时间 date(birthdate) not between '2016-01-01' and '2017-01-01',是mysql里date类型可以直接与字符串进行比较运算?那这里birthdate可以不用 date 函数转换了;oracle中日期的比较就比较严格,to_date、to_char 效率也不同. a. 是的,在oracle中可以使用to_char, to_date做转换:
同时在mysql中也有类似的函数
比如:
3. 踩坑记录设置字段类型为datetime后,插入数据一直报错,该数据是从网上搜索得到的当前时区的当前的时间,-- 即东八区时间,最后发现mysql默认是utc时间,格林威治时间,但是似乎这并不是应该是插入失败的原因。 tbd 总之,当时为了能插入数据,就使用的是mysql 当前时区的时间。 |