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 版权声明:本文为博主原创文章,转载请附上博文链接!
|