- 2013-09-29国务院近日印发了上海自由贸易试验区总体方案,自贸区...
 - 2013-09-29移动医疗大潮袭来,看着是肉 咬下去是骨头。
 - 2013-09-28安卓阵营集体遭360洗劫,华为三星步步高悉数中枪
 - 2013-09-28小米MIUI团队声明称应用商店内全线下架360产品
 - 2013-09-25阿里巴巴与云存储应用酷盘的收购谈判行已结束,阿里巴...
 - 2013-09-25苹果称其全新Touch ID指纹扫描安全系统可以“十分安全...
 - 2013-09-24上海自贸区不设防火墙 脸谱和推特等解禁
 - 2013-09-24Fairfax Financial计划收购黑莓:每股9美元 总价47亿美...
 - 2013-09-24消息称苏宁洽购PPTV进入尾声 金额约为4亿美元
 - 2013-09-238月25日凌晨,中国.CN域名解析出现大规模解析故障,攻击...
 
MySQL中关于日期、时间的数据类型和函数
					发表于:2013-09-15|
					次阅读|
					作者:藕码网
				
				
				摘要:MySQL中关于日期、时间的数据类型和函数
				
	一、日期相关的数据类型
	1、datetime
	占用8字节,既显示了日期,又显示了时间。其表示的日期范围为“1000-01-01 00:00:00”到“9999-12-31 23:59:59”
	2、date
	占用3个字节,可显示的日期范围“1000-01-01”到“9999-12-31”
	3、timestamp
	和datetime显示结果一样,都是固定的“YYYY-MM-DD 
00:00:00“。不同的是timestamp占用4个字节,显示范围为”1970-01-01 00:00:00”UTC到“2038-01-19 
03:14:07“UTC。其实际存储的内容为”1970-01-01 
00:00:00”到当前时间的毫秒数。在新建表时,列为timestamp类型可以设置一个默认值,而datetime不行。在更新表时,可以设置
timestamp类型的列自动更新时间为当前时间
	如下
	新建表
	create table score (
	    id int(10) not null primary key,
	    bz2 TIMESTAMP DEFAULT CURRENT_TIMESTAMP
	)
	插入一条数据,不对timestamp类型插入
	insert into score (id) VALUES (1)
	运行结果如下:timestamp类型自动赋默认值,我们设置的默认值为CURRENT_TIMESTAMP
	
	
	
		更新表
	
	
		create table score (
	
	
		    id int(10) not null primary key,
	
	
		    bz2 TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
	
	
		)
	
	
		insert into score (id,bz2) values (1,CURRENT_TIMESTAMP)
	
	
		结果如下
	
执行update语句 : update score set id=2
	
		可以看到bz2的时间自动变为更新表的当前时间
	
	
		4、year
	
	
		year类型占用1字节,并且可以在定义的时候指定显示的宽度为year(4)或者year(2)。year(4)显示的范围为1901-2070,year(2)的显示范围为1970-2070,该设置下,00-69代表2000-2069,代表最近的年份
	
	
		5、time
	
	
		占3个字节,显示范围为”-838:59:59“-”838:59:59“。为什么time的类型可以大于23,可以为负值,这是因为time不仅可以用来保存一天中的时间,还可以保存时间的间隔。
	
	
		二、日期相关的函数
	
	
		1、now(),current_timestamp(),sysdate()
	
	
		执行sql语句:select now(),current_timestamp(),sysdate(),结果如下:
	
		这样,看不出三个有什么区别,然后执行下面的sql语句:
	
	
		select sleep(2), now(),current_timestamp(),sysdate();其中,sleep(2)代表执行等待2秒
	
	
		结果如下:
	
		可以看出,now(),current_timestamp()这两个函数结果相同,它们等价,指的是sql开始执行的时间
	
	
		而sysdate()的结果晚了两秒,代表执行该函数时候的当前时间。
	
	
		2、时间加减的函数
	
	直接进行now()+1会返回给你一个数字而不是日期,如下:select now()+1
			
		
				那么如何在now的基础上加上一天或者减去一天,这就要用到date_add(date, interval 1 day),date_sub(date, interval 1 day)函数。
			
			
				用法如下:select now() as today, date_add(now(), interval 1 day) as tomorrow,date_sub(now(), interval 1 day) as yestoday
			
			
				结果如下:
			
				在函数中使用的是day作为间隔时间,也可以使用year,month,week,hour,minute,second等
			
			
				3、date_format()函数
			
			
				其作用是按照用户需求格式化打印日期
			
			
				select DATE_FORMAT(NOW(),'%Y%m%d')
			
			
				其中%Y代表4位的year,%y代表2位的year;%m代表2位的month;%d代表2位的day。其中,%Y,%m,%d之间可以添加
任何的字符已达到自己目标。上述格式输出20130915,如果设为’%Y:%m:%d',则输出2013:09:15,如果设为为’%Y/%m
/%d',则输出2013/09/15
			
		
	
注:本站部分信息可能源于互联网分享,如有侵权,请告知,我们将及时删除!
- 用户评论
 - 相关文章
 
- 
								最新评论
 
推荐文章
				- 
							1 
使用IIS+Resin来配置J...
本文介绍使用IIS+Resin来配置JSP的运行环境... - 
							2 
MYSQL的主要参数设置(...
MYSQL的主要参数设置(优化) - 
							3 
Linux服务器安全小技巧...
Linux 服务器安全小技巧 - 
							4 
批量修改计算机名
批量修改计算机名 - 
							5 
Linux下安装apache
Linux下安装apache - 
							6 
Windows日志NTFS错误
Windows日志NTFS错误 
热门文章榜
				
			







