mysql中的timestamp和date

一、TIMESTAMP

显示格式:YYYY-MM-DD HH:MM:SS

时间范围:[ '1970-01-01 00:00:00'到'2037-12-31 23:59:59']

TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  在创建新记录和修改现有记录的时候都对这个数据列刷新。

TIMESTAMP DEFAULT CURRENT_TIMESTAMP  在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它。

TIMESTAMP ON UPDATE CURRENT_TIMESTAMP  在创建新记录的时候把这个字段设置为0,以后修改时刷新它。

TIMESTAMP DEFAULT ‘yyyy-mm-dd hh:mm:ss’ ON UPDATE CURRENT_TIMESTAMP  在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它

 

1、TIMESTAMP列不为空时,默认值可以为“0000-00-00 00:00:00”,但不能为null。

2、一个表可以存在多个TIMESTAMP列,但一个表只有一个TIMESTAMP类型的字段可以在默认值或者UPDATE部分用CURRENT_TIMESTAMP,即设置为数据更新而改变为数据库系统当前值。

3、TIMESTAMP列的默认值是CURRENT_TIMESTAMP常量值。当纪录数据发生变化的时候,TIMESTAMP列会自动将其值设定为CURRENT_TIMESTAMP。

4、TIMESTAMP列创建后的格式是:

ALTER TABLE `course`

ADD COLUMN `birthday`  timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

 

ALTER TABLE `course`

ADD COLUMN `birthday`  timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP ;

 

ALTER TABLE `course`

ADD COLUMN `birthday`  timestamp NULL AFTER `cname`;

 

二、DATETIME

显示格式:YYYY-MM-DD HH:MM:SS

时间范围:[ '1000-01-01 00:00:00'到'9999-12-31 23:59:59']

 

三、DATE

显示格式:YYYY-MM-DD

时间范围:['1000-01-01'到'9999-12-31']

 

四、日期格式转换

1、字符串转日期

select STR_TO_DATE('2013-01-29 13:49:18', '%Y-%m-%d %H:%i:%s')相当于oracle中的 to_date

2、日期转字符串

select DATE_FORMAT('2013-01-29 13:49:18', '%Y-%m-%d %H:%i:%s')相当于oracle中的to_char


五、TIMESTAMPDIFF函数与TIMESTAMPADD函数

TIMESTAMPDIFF

语法:

TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)。

说明:

返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出。该参数必须是以下值的其中一个:

  1. FRAC_SECOND。表示间隔是毫秒
  2. SECOND。秒
  3. MINUTE。分钟
  4. HOUR。小时
  5. DAY。天
  6. WEEK。星期
  7. MONTH。月
  8. QUARTER。季度
  9. YEAR。年
TIMESTAMPADD

语法:
TIMESTAMPADD(interval,int_expr,datetime_expr)

说明:
将整型表达式int_expr 添加到日期或日期时间表达式 datetime_expr中。式中的interval和上文中列举的取值是一样的。


mysql中存储类型为timestamp的项,在使用jdbctemplate访问时,通过resultset.getString()获得的值为yyyy-mm-dd hh:mm:ss.0。去掉.0的方法是通过DATE_FORMAT()方法对对应项格式化。

语法格式为

DATE_FORMAT(date,format),format参数值入下:
 
  
%a 缩写星期名
%b 缩写月名
%c 月,数值
%D 带有英文前缀的月中的天
%d 月的天,数值(00-31)
%e 月的天,数值(0-31)
%f 微秒
%H 小时 (00-23)
%h 小时 (01-12)
%I 小时 (01-12)
%i 分钟,数值(00-59)
%j 年的天 (001-366)
%k 小时 (0-23)
%l 小时 (1-12)
%M 月名
%m 月,数值(00-12)
%p AM 或 PM
%r 时间,12-小时(hh:mm:ss AM 或 PM)
%S 秒(00-59)
%s 秒(00-59)
%T 时间, 24-小时 (hh:mm:ss)
%U 周 (00-53) 星期日是一周的第一天
%u 周 (00-53) 星期一是一周的第一天
%V 周 (01-53) 星期日是一周的第一天,与 %X 使用
%v 周 (01-53) 星期一是一周的第一天,与 %x 使用
%W 星期名
%w 周的天 (0=星期日, 6=星期六)
%X 年,其中的星期日是周的第一天,4 位,与 %V 使用
%x 年,其中的星期一是周的第一天,4 位,与 %v 使用
%Y 年,4 位
%y 年,2 位
例:SELECT DATE_FORMAT('2011-09-20 08:30:45',   '%Y-%m-%d %H:%i:%S');

你可能感兴趣的:(mysql中的timestamp和date)