设为首页 收藏本站
查看: 2050|回复: 0

[经验分享] mysql 时间问题

[复制链接]

尚未签到

发表于 2016-9-12 10:57:07 | 显示全部楼层 |阅读模式
  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  也不会显示小时分钟和秒。
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-271194-1-1.html 上篇帖子: mysql备份 (转) 下篇帖子: MySQL第一课!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表