Mysql 时间与时区
再Mysql, 或者 Mariadb 命令行里运行
select now();
+---------------------+
| now() |
+---------------------+
| 2018-08-30 17:45:42 |
+---------------------+
js日期格式化函数,也可以得到类似的字符串
function timestampToTime(timestamp) {var date = new Date(timestamp);//时间戳为10位需*1000,时间戳为13位的话不需乘1000var Y = date.getFullYear() + '-';var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + '-';var D = date.getDate() + ' ';var h = date.getHours() + ':';var m = date.getMinutes() + ':';var s = date.getSeconds();return Y+M+D+h+m+s;}
但是类似“2018-08-30 17:45:42 “ 的时间,不够精确,会随着时区的不同而不同,全球有24个时区,有24个不同结果。
在chrome浏览器下 按F12,在控制台输入以下代码,在不同的时区运行以下js 代码得到的结果是不同的
+new Date("2018-08-30 17:45:42")
但是如果在不同的时区, 几乎同一时刻,运行JS代码,
+new Date()
得到的结果应该是相同的,即使不同也仅仅相差几秒(没有验证过,只是推测)。不会像“+new Date(“2018-08-30 17:45:42”)“ 的结果相差若干个小时。
在Mysql的命令行下,结果也是一样的,比如你有一个位于其他时区的linux服务器,然后这个服务器上安装mysql / mariadb,
用mysql账户登录mysql的命令环境,分别在本地和远程的mysql命令行运行这两个sql
select now();
select unix_timestamp();
然后比较一下本地结果和远程服务器结果。可以看到两者的select now(); 执行结果差异很大,所在时区对结果有很大的影响,而第二个sql的结果和所在时区没有关系。
所以,如果需要精确的控制时间, mysql的日期或者时间 字段 最好用bigint类型,不要用varchar类型,但用bigint类型有点影响数据库数据的直观性。但可以用mysql的函数解决
select from_unixtime(left(moment, length(moment)-3) ) from users;
moment是 users表的 bigint类型的字段。其长度为13, 对应于java的long 类型, javascript 代码 +new Date() 得到的结果也是13位的时间戳。
mysql 语句 select unix_timestamp(); 得到的结果是10 位的时间戳
意图把abc表中的moment字段,varchar类型,转为bigint类型,同时要避免数据丢失,如果直接用alter语句,结果就是“2018-02-03“ 变为数字 2018了。
update abc set moment=concat(moment, " 00:00:00");
update abc set moment=unix_timestamp(moment);
alter table abc change moment moment BIGINT COMMENT '创建时间';
update abc set moment=moment*1000;
mysql> select now(), sleep(3), now();
mysql> select sysdate(), sleep(3), sysdate();
引用: http://www.cnblogs.com/ggjucheng/p/3352280.html
Mysql 时间与时区相关推荐
- mysql时间正确时区错误_在app中的日期时间但在mysql [时区]错误
问题:在应用程序服务器的正确时间,数据库中出错. 我在中国,时区是UTC + 8 我使用休眠.实体定义如下(语言:Scala) class CargoJournal { @Type(`type`=&q ...
- php mysql datetime时区,Django models通过DateTimeField保存到MySQL的时间的时区问题
最近开始使用Django开发一些系统,在models.py中设置一些数据库表结构并给日期时间字段赋初值,不过在使用的过程中,遇到一点问题.问题是,我本来服务器使用的市区是"Asia/Shan ...
- MySQL时间慢了八个小时
由于我公司另外一个运维小伙伴装系统的时候,勾选了UTC这个东东.(会导致慢八个小时的时间误差)结果才有了这一次逗比的经历. 1.系统时间慢八个小时,我发现不对劲后,就改回来了,可参考我的另外一篇博客. ...
- MYSQL和ORACLE时区设置比较
MYSQL: 注意时区会影响TIMESTAMP的取值,默认为系统时区为TIME_ZONE=SYSTEM, 动态可以修改 set global time_zone = '+8:00'; 然后 my.c ...
- node+Mysql,数据库时区显示正确,查询时却显示另一个时区
问题: 1.node+Mysql,查看数据库时区显示正确,但查询时,显示的确是另一个时区的时间. 2.前端调用接口返回:startTime: "2020-03-04T17:53:55.000 ...
- MySQL + springboot修改时区的方法小结
说明:这里总结记录修改mysql时区的三种方法. 方法一:通过mysql命令行模式下动态修改 1.1 查看mysql当前时间,当前时区 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- mysql支持的时区列表_mysql按天分组支持时区
时区问题总是个比较麻烦的问题,客户端与服务器的时区不一致自然是理所当然的事情,而对于多台服务器或者分布式再或者炙手可热的云,时区不统一也很正常,而且也不需要统一,还好有个时间戳的概念,通过时间戳就可以 ...
- mysql 时间绝对值_datetime和timestamp--时间戳是绝对值,日期是相对值
遇到的问题:系统时间与数据库时间不一致,系统时间是8:20,存到数据库里是0:20. 第一直觉是时区不同导致的. 先看一段代码: Java代码 public static void main(Stri ...
- mysql cst_一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历...
摘要 名为 CST 的时区是一个很混乱的时区,在与 MySQL 协商会话时区时,Java 会误以为是 CST -0500,而非 CST +0800. CST 时区 名为 CST 的时区是一个很混乱的时 ...
最新文章
- 数组-丢失的数字(哈希表法)
- 面试 10+公司,囊获 8 个Offer,面经全公开
- 程序员面试被问:公司遇难你愿意留下?网友:辉煌时升职吗
- python 返回字符串长度_Python在使用特殊字符时返回错误的字符串长度
- CodeForces - 976F Minimal k-covering
- .gitignore文件_Java小白入门,Git忽略文件.gitignore详解
- OpenCV 编译 - Unable to locate package libjasper-dev
- 慢连接攻击的原理和防范
- win10磁盘100官方解释_win10磁盘分区管理工具大变脸,现代磁盘管理工具喷薄而出...
- FreeCAD项目编译记录(1)
- 验证日期的正则表达式比较全面地验证
- 主题模型LDA理解与应用
- day10 强制类型转换(更新)
- Node.js调用百度地图Web服务API的Geocoding接口进行点位反地理信息编码
- 解决mysql编码问题_解决mysql乱码问题
- html 跑马灯效果 源代码,跑马灯效果.html
- 这么有料的福利,你还不赶紧关注一波吗?(代码合集)
- 直播软件视频流怎样测试,手把手教你,如何用视频号直播推流!
- Dicom标签之(0020,0037) Image Orientation (Patient)
- 程序员学炒股(3) 个股和大盘的关系之二