使用int和datetime存放时间的情况下 (使用语言: php)
相同点
1.int和date可以使用<>=这些符号进行比较.
区别:
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微妙们可以忽略本地转换时间,以下是测试代码
$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)这样子,不需要去做额外的转换