mysql日期怎么选 mysql 日期操作

数据库的日期类型字段该如何选择Mysql中经常用来存储日期的数据类型有三种:Date、Datetime、Timestamp 。
Date数据类型:用来存储没有时间的日期 。Mysql获取和显示这个类型的格式为“YYYY-MM-DD” 。支持的时间范围为“1000-00-00”到“9999-12-31” 。
Datetime类型:存储既有日期又有时间的数据 。存储和显示的格式为 “YYYY-MM-DD HH:MM:SS” 。支持的时间范围是“1000-00-00 00:00:00”到“9999-12-31 23:59:59” 。
Timestamp类型:也是存储既有日期又有时间的数据 。存储和显示的格式跟Datetime一样 。支持的时间范围是“1970-01-01 00:00:01”到“2038-01-19 03:14:07” 。
【mysql日期怎么选 mysql 日期操作】所有不符合上面所述格式的数据都会被转换为相应类型的0值 。(0000-00-00或者0000-00-00 00:00:00)
时间存储在MySQL里面选择什么类型更好储存时间,常用的有三个选择datetime、timestamp、int 。昨夜同事问到了,于是今天就总结一下自己的理解 。插入效率:datetimetimestampint读取效率:inttimestampdatetime储存空间:datetimetimestamp = int具体上面的实验数据可以看这篇文章 。
建立索引的体积 , 和索引的速度,你懂的 。
让我们来看一个应用场景:
看下这张图,第一我们需要设置系统的默认时区 , 第二我们也需要提供不同时区时间显示的需要 。于是,我们分别使用datetime、timestamp、int字段类型来看下:使用datetime直接显示时间,这是个不错的选择,但是如果考虑到时区,很明显计算上的麻烦 。使用timestampOK,这个很好,可以根据系统的时区来自动输出时间,但是单个用户要定制自己的时区呢?再者你不怕麻烦,在程序里面实现了这个计算 , 服务器若是换个地方,改了下时区,你程序里面计算单个用户当地时间的代码怎么办(timestamp出来的时间会根据时区的变化而变化,在某些情况下是不错的选择,但在某些情况下,真的很鸡肋) 。使用int从上面两个类型的缺点看来 , 貌似这个类型可以解决以上的问题 , 其实我们只要存格林时间的unix timestamp就好了,时区时间的计算上也很方便,读取的效率也不错 。我觉得用这个储存的缺点呢,就是直接select的时候时间不能直观的显示出来 。看看其他开源程序是怎么做的discuz, typecho, emlog等等等等,他们都选用int了 , 这一定有他们的道理 , 我想也没什么可以多说的了 。
怎样在MySQL中操作日期mysql有丰富的时间函数:
ADDTIME (date2 ,time_interval ) //将time_interval加到date2
CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区
CURRENT_DATE ( ) //当前日期
CURRENT_TIME ( ) //当前时间
CURRENT_TIMESTAMP ( ) //当前时间戳
DATE (datetime ) //返回datetime的日期部分
DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间
DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetime
DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间
DATEDIFF (date1 ,date2 ) //两个日期差
DAY (date ) //返回日期的天
DAYNAME (date ) //英文星期
DAYOFWEEK (date ) //星期(1-7) ,1为星期天
DAYOFYEAR (date ) //一年中的第几天
EXTRACT (interval_name FROM date ) //从date中提取日期的指定部分
MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串
MAKETIME (hour ,minute ,second ) //生成时间串
MONTHNAME (date ) //英文月份名
NOW ( ) //当前时间
SEC_TO_TIME (seconds ) //秒数转成时间
STR_TO_DATE (string ,format ) //字串转成时间,以format格式显示
TIMEDIFF (datetime1 ,datetime2 ) //两个时间差
TIME_TO_SEC (time ) //时间转秒数]
WEEK (date_time [,start_of_week ]) //第几周
YEAR (datetime ) //年份
mysql日期怎么选的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于mysql 日期操作、mysql日期怎么选的信息别忘了在本站进行查找喔 。

    推荐阅读