datetime 8 bytes
date 3 bytes
timestamp 4 bytesdate 3 bytes
year 1 bytes
timestamp显示的范围:1970-01-01 00:00:00 到 2038-01-19 03:14:07
在建表时,列为timestamp 的日期类型可以设置一个默认值,而datetime不行
在更新时,可以设置timestamp 类型的列自动更新为当前时间。
注意:当update时,a=2 ,原来的a也是2,列没变化时,更新时间不会发生变化。
与时间和日期相关的函数
NOW(),CURRENT_TIMESTAMP(),SYSDATE() 都能返回当前的系统时间
now() 基本上和 CURRENT_TIMESTAMP() 是一样的,返回的是执行sql语句的时间
而SYSDATE 返回的是执行到当前函数时的时间。
2.时间加减函数 DATE_ADD() , DATE_SUB()
3.DATE_FORMAT函数 :格式化日期
DATE_FORMAT(now(),'%Y%M%D')
错误使用:在需要查询某天数据时,
select * from table where date_format(date,'%Y%M%D') = 'xxxx-xx-xx';
一般来说表中会有一个对日期类型的索引,如果使用上述语句,优化器绝对不会使用索引,也不可能通过索引来查询数据,因此上述查询的执行效率可能比较低。