百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> MySQL日期函数datetime与timestamp的3大区别
分享文章到:

MySQL日期函数datetime与timestamp的3大区别

发布时间:01/15 来源: 浏览: 关键词:
在MySQL中日期函数datetime与timestamp的区别有几个朋友会很详细的知道呢,下面小编来给大家总结一下mysql中datetime与timestamp 一些比较。

相同: 显示格式一致:YYYY-MM-DD HH:MM:SS;

不同:

范围: datetime支持的范围为’1000-01-01 00:00:00′到’9999-12-31 23:59:59′

TIMESTAMP值不能早于1970或晚于2037

储存:

TIMESTAMP

1.4个字节储存(Time stamp value is stored in 4 bytes)
2.值以UTC格式保存( it stores the number of milliseconds)
3.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。

timestamp列类型timestamp值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。

  timestamp值显示尺寸的格式如下表所示:
         +-------------------+------------------------+
     | 列类型       | 显示格式            |
     | timestamp(14) | yyyymmddhhmmss | 
     | timestamp(12) | yymmddhhmmss  |
     | timestamp(10) | yymmddhhmm    |
     | timestamp(8) | yyyymmdd            |
     | timestamp(6) | yymmdd          |
     | timestamp(4) | yymm            |
     | timestamp(2) | yy                |
     +-------------------+-------------------------+

  “完整”timestamp格式是14位,但timestamp列也可以用更短的显示尺寸创造

  最常见的显示尺寸是6、8、12、与14。

  你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14。

  列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数。

  列如:

  定义字段长度   强制字段长度

  timestamp(0) -> timestamp(14)
  timestamp(15)-> timestamp(14)
  timestamp(1) -> timestamp(2)
  timestamp(5) -> timestamp(6)

  所有的timestamp列都有同样的存储大小,使用被指定的时期时间值的完整精度(14位)存储合法的值不考虑显示尺寸。

  不合法的日期,将会被强制为0存储


datetime

1.8个字节储存(8 bytes storage)
2.实际格式储存(Just stores what you have stored and retrieves the same thing which you have stored.)
3.与时区无关(It has nothing to deal with the TIMEZONE and Conversion.)

方法一:

 

你也可以:
select * from t1 where unix_timestamp(time1) > unix_timestamp('2011-03-03 17:39:05') and unix_timestamp(time1) < unix_
timestamp('2011-03-03 17:39:52');
就是用unix_timestamp函数,将字符型的时间,转成unix时间戳。个人觉得这样比较更踏实点儿。

 

方法二:

 

time1 between '2011-03-03 17:39:05' and '2011-03-03 17:39:52';

 

方法三:

可以讲datetime类型转换成date类型再进行比较
例如:convert(date,表名.datetime列名) >= convert(date,表名.datetime列名)

 

三种方法待求证,总之是不要用字符串这么直接比


默认值: TIMESTAMP 默认值不为空,可以设置为默认当前时间, NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP
datetime 默认值可以设置为空

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有7人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板