`
ponlya
  • 浏览: 159999 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Mysql 时间

阅读更多

mysql 的时间函数很丰富

1.mysql 查询时间中秒不为0的过滤条件

SECOND(t.file_time)

 2.当前时间

now() 

 3.一天前

select DATE_SUB(curdate(), INTERVAL 1 DAY)

 4.timestamp默认值

mysql timestamp字段的怪异问题
创建表语句:

CREATE  TABLE `testtimestamp` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `file_time` TIMESTAMP NOT NULL ,
  `scan_time` TIMESTAMP NULL ,
  `created` TIMESTAMP NOT NULL ,
  `modified` TIMESTAMP NOT NULL ,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

 执行后,file_time 的默认值为CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
scan_time 的默认值为NULL
created 和 modified的默认值 为'0000-00-00 00:00:00'
很奇怪的问题,创建语句的第一个timestamp字段为CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
而且file_time在update时如果set组中无则会默认为now() !!!???

这样会导致有默认值,且如果update语句中无此字段,会默认填充当前时间。

修改类型:

ALTER TABLE `database`.`tablename` CHANGE COLUMN `columname` `columname` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'  ;

 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics