您的位置:首页 > 数据库 > MySQL

mysql int和datetime存放时间戳和时间日期对比

2017-05-15 11:03 302 查看
使用int和datetime存放时间的情况下 (使用语言: PHP)

相同点

1.int和date可以使用<>=这些符号进行比较.

int

区别:

1.无数据自带校验,使用php自带函数(strtotime)转换成时间日期格式,

2.可读性较差,每次阅读都必须使用date函数进行转换

3.计算日期方便, 增减天数+-24*60*60

4.使用<>=比较的时候做的是整数比较

datetime

区别:

1.自带数据校验,如果插入数据为(2014-15-41 00:00:00)这类错误的数据,这会存放为伪日期(00-00-00 00:00:00){"在非严格模式下"};

2.可读性很好,直接识别日期

3.计算日期就需要用到相关的date函数

1.增加为date_add(起始日期, 增加的时间); 第二个参数必须是(string类型)

2.减天数date_sub(起始日期, 减少的时间);

第二个参数必须是(string类型)

3.返回两个日期之间的天数 DATEDIFF(起始日期,结束日期) {SELECT DATEDIFF('1997-11-30 23:59:59','1997-12-31');}

4.使用<>=比较的时候做的是字符串比较

效率比较:

MySQL 版本是5.6



CREATE TABLE test (time int, dtime datetime)

插入700W条数据后



使用select 查询dateime类型





使用select 查询int时间戳





使用php做date('Y-m-d H:i:s', xx转换1000条数据花不了1微妙们可以忽略本地转换时间,以下是测试代码

[php] view plain copy

$date_array = explode(" ", microtime()); 

$date = $date_array[1]; 

for ($i = $date; $i < $date + 10000; $i++){ 

    date('Y-m-d H:i:s', $i); 



$date_array = explode(" ", microtime() ); 

echo $date_array[1] - $date; 

exit; 

总结下:

使用int存放时间戳是比datetime快的,而是在编程的时候,int也更方便使用吧,不需要去记忆额外的sql函数

而使用datetime做为数据库类型存放日期,对数据的可读性很有帮助.而对代码的可读性也是很有帮助的,毕竟使用ADDDATE这样的sql函数之后: 特定的日期要加1天就是需要ADDDATE('2014-12-29', 1)这样子,不需要去做额外的转换


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java