mysql 时间有关问题

mysql 时间问题mysql 数据库时间类型字段有:date,time,year,datetime,timestamp几种类型。??字符串类型数据

mysql 时间问题

mysql 数据库时间类型字段有:date,time,year,datetime,timestamp几种类型。

?

?

字符串类型数据列的字符集属性

在MySQL?4.1以前的版本,字符串数据列的字符集由服务器的字符决定,MySQL?4.1版以后的版本可对每个字符串数据列指定不同的字符串。如果按默认方式设置,可按数据列、数据表、数据库、服务器的顺序关联字符串的字符集,直到找一个明确定义的字符集。

日期,时间型数据列类型

DATE?1000-01-01~9999-12-31?3字节(MySQL3.23版以前是4字节?)?0000-00-00?
TIME?-838:59:59~838:59:59?3字节?00:00:00?
DATETIME?1000-01-01?00:00:00~9999-12-31?23:59:59?8字节?0000-00-00?00:00:00?
TIMESTAMP?19700101000000~2037年的某个时刻?4字节?00000000000000?
YEAR?YEAR(4):1901~2155?YEAR(2):1970~2069?1字节?0000?

MySQL总是把日期和日期里的年份放在最前面,按年月日的顺序显示。

DATE、TIME、DATATIME数据列类型

DATE、TIME和DATATIME类型分别存放日期值、时间值、日期和时间值的组合。它们的格式分别是“CCYY-MM-DD”、“hh:mm:ss”、“CCYY-MM-DD?hh:mm:ss”。

DATATIME里的时间值和TIME值是有区别的,DATATIME里的时间值代表的是几点几分,TIME值代表的是所花费的时间。当向TIME数据列插值时,需用时间的完整写法,如12分30秒要写成“00:12:30”。

TIMESTAMP数据列类型

TIMESTAMP数据列的格式是CCYYMMDDhhmmss,取值范围从19700101000000开始,即1970年1月1号,最大到2037年。它的特点是能把数据行的创建或修改时间记录下来:

如果把一个NULL值插入TIMESTAMP列,这个数据列就将自动取值为当前的日期和时间。

在创建和修改数据行时,如果没有明确对TIMESTAMP数据列进行赋值,则它就会自动取值为当前的日期和时间。如果行中有多个TIMESTAMP列,只有第一个会自动取值。

如果对TIMESTAMP设置一个确定的日期和时间值,则会使TIMESTAMP的自动取值功能失效。

TIMESTAMP默认的列宽是14,可指定列宽,以改变显示效果。但不论你指定的列宽如何,MySQL都是以4字节来存储TIMESTAMP值,也总是以14位精度来计算。

如果需要把创建时间和最近一次修改时间同时记录下来,可以用两个时间戳来记录,一个记录创建时间,一个记录修改时间。不过需记住两件事,一是要把记录修改时间的TIMESTAMP数据列放在最前面,这样才会自动取值;二是创建一条新记录时,要用now()函数来初始化创建时间TIMESTAMP数据列,这样,该TIMESTAMP数据列就不会再变化。

YEAR

YEAR是一种单字节的数据列类型,YEAR(4)的取值范围是1901~2155,YEAR(2)的取值范围是1970~2069,但只显示最后两位数。MySQL能自动把两位数字年份转换成四位数字的年份,如97和14分被转换成1997和2014。转换规则是这样的:

年份值00~69将被转换成2000~2069;

年份值70~99将被转换成1970~1999。
?
00被转换成0000,而不是2000。因为数值00也就是0,而0值是YEAR的一个合法取值

?

java方式获取Mysql的时间很灵活,可以用

?

  journalDailyMeeting.setNext_meeting_time(ret.getDate("next_meeting_time"));
?
journalDailyMeeting.setNext_meeting_time(ret.getTimestamp("next_meeting_time"));

?

journalDailyMeeting.setNext_meeting_time(ret.String("next_meeting_time"));

?

注意:可以用getString获取时间。

?

oracle必须用getDate

?

mysql 用getDate 展示的是yyyy-MM-dd? 即便是你数据库里面展示的是 datetime? 也不会显示小时分钟和秒。

?

?