mysql解决datetime与timestamp精确到毫秒的问题
CREATE TABLE `tab1` (
`tab1_id` VARCHAR(11) DEFAULT NULL,
`create` TIMESTAMP(3) NULL DEFAULT NULL,
`create2` DATETIME(3) DEFAULT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8
SELECT * FROM tab1;
TIMESTAMP(3)与 DATETIME(3)意思是保留3位毫秒数
TIMESTAMP(6)与 DATETIME(6)意思是保留6位毫秒数
修改已存在的表字段示例:ALTER TABLE tb_financial MODIFY CREATE_TIME DATETIME(3) DEFAULT NULL COMMENT '录入时间';
插入日期可以用NOW(3)来控制精确的毫秒数,SELECT CURRENT_TIMESTAMP(3);也是可以的
http://www.cnblogs.com/shihaiming/p/5853595.html
DEFAULT values in MySQL must be constants. They can't be functions or expressions (with the exception of CURRENT_TIMESTAMP).
Source: http://dev.mysql.com/doc/refman/5.6/en/data-type-defaults.html
http://stackoverflow.com/questions/27601482/add-date-time-as-default-value
DATETIME类型用在你需要同时包含日期和时间信息的值时。MySQL检索并且以'YYYY-MM-DD HH:MM:SS'格式显示DATETIME值,支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。(“支持”意味着尽管更早的值可能工作,但不能保证他们可以。)
DATE类型用在你仅需要日期值时,没有时间部分。MySQL检索并且以'YYYY-MM-DD'格式显示DATE值,支持的范围是'1000-01-01'到'9999-12-31'。
TIMESTAMP列类型提供一种类型,你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。
TIME数据类型表示一天中的时间。MySQL检索并且以"HH:MM:SS"格式显示TIME值。支持的范围是'00:00:00'到'23:59:59'
CREATE TABLE `tb_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `date1` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIM ESTAMP, `date2` date DEFAULT NULL, `date3` datetime DEFAULT NULL, `time` time DEFAULT NULL, PRIMARY KEY (`id`) );
日期类型 存储空间 日期格式 日期范围
datetime 8 bytes YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
timestamp 4 bytes YYYY-MM-DD HH:MM:SS 1970-01-01 00:00:01 ~ 2037-12-31 23:59:59
date 3 bytes YYYY-MM-DD 1000-01-01 ~ 9999-12-31
datetime和timestamp的区别:
1.datetime 的日期范围比较大;如果有1970年以前的数据还是要用datetime.但是timestamp 所占存储空间比较小。
2.timestamp 类型的列还有个特性:默认情况下,在 insert, update 数据时,timestamp 列会自动以当前时间(CURRENT_TIMESTAMP)填充/更新。
3.timestamp比较受时区timezone的影响以及MYSQL版本和服务器的SQL MODE的影响.
使用一个常用的格式集的任何一个,你可以指定DATETIME、DATE和TIMESTAMP值:
'YYYY-MM-DD HH:MM:SS'或'YY-MM-DD HH:MM:SS'格式的一个字符串,允许一种"宽松"的语法:任何标点可用作在日期部分和时间部分之间的分隔符。例如,'98-12-31 11:30:45'、'98.12.31 11+30+45'、'98/12/31 11*30*45'和'98@12@31 11^30^45'是等价的。
---------------------
作者:漱冰濯雪
来源:CSDN
原文:https://blog.csdn.net/shubingzhuoxue/article/details/52606645
版权声明:本文为博主原创文章,转载请附上博文链接!
date:你直接就可以理解为2017-3-21 不带时分秒的
datetime:相反,则是带时分秒的
timestamp:时间戳 很好理解(1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。)
其中有提到时间范围的问题:
时间范围
date -- > '1000-01-01' to '9999-12-31'.
datetime --> '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.
timestamp -- > '1970-01-01 00:00:01' UTC to '2038-01-19 03:14:07' UTC
常用日期函数以及转换
1、获取当前日期:
CURRENT_DATE()或者CURDATE()
2、获取当前时间:
CURRENT_TIME()或者CURTIME()
3、获取当前日期和时间
NOW()或者CURRENT_TIMESTAMP()
4、linux/unix时间戳和mysql时间日期类型之间的转换:
UNIX_TIMESTAMP(NOW()) //将mysql的datetime转换成linux/unix的时间戳;日期时间
UNIX_TIMESTAMP(DATE(NOW())) //将mysql的date转换成linux/unix的日期。
UNIX_TIMESTAMP(TIME(NOW())) //将mysql的time转换成linux/unix的时间。(用问题)
FROM_UNIXTIME(time_t) //将unix的时间戳转换成mysql的datetime;日期时间
DATE(FROM_UNIXTIME(time_t)) //日期
TIME(FROM_UNIXTIME(time_t)) //时间
---------------------
作者:Swen码农
来源:CSDN
原文:https://blog.csdn.net/a3025056/article/details/62885104
版权声明:本文为博主原创文章,转载请附上博文链接!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
2014-12-05 No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
2014-12-05 Mylyn