mybatis-mysql比较两个timestamp的时间

上传人:鲁** 文档编号:498559957 上传时间:2023-02-24 格式:DOCX 页数:9 大小:20.79KB
返回 下载 相关 举报
mybatis-mysql比较两个timestamp的时间_第1页
第1页 / 共9页
mybatis-mysql比较两个timestamp的时间_第2页
第2页 / 共9页
mybatis-mysql比较两个timestamp的时间_第3页
第3页 / 共9页
mybatis-mysql比较两个timestamp的时间_第4页
第4页 / 共9页
mybatis-mysql比较两个timestamp的时间_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《mybatis-mysql比较两个timestamp的时间》由会员分享,可在线阅读,更多相关《mybatis-mysql比较两个timestamp的时间(9页珍藏版)》请在金锄头文库上搜索。

1、mybatis mysql 怎么比较两个 timestamp 的时间IMESTAMP的变体1 , TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP在创建新记录和修改现有记录的时候都对这个数据列刷新2,TIMESTAMP DEFAULT CURRENT_TIMESTAMP 在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它3,TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 在创建新记录的时候把这个字段设置为0,以后修改时刷新它4,TIMESTAMP DEFAULT yyyy-

2、mm-dd hh:mm:ss ON UPDATECURRENT_TIMESTAMP在创建新记录的时候把这个字段设置为给定值,以后修改时刷新它MySQL目前不支持列的Default为函数的形式,如达到你某列的默认值为当前更新日期与时间的功能,你可以使用TIMESTAMP列类型下面就详细说明TIMESTAMP列 类型*TIMESTAMP 列类型*TIMESTAMP值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。TIMESTAMP值显示尺寸的格式如下表所示:|列类型|显示格式| TIMESTAMP(14) | YYYYMMDDHHMMSS | TIMESTAMP(12)

3、| YYMMDDHHMMSS | TIMESTAMP(10) | YYMMDDHHMM | TIMESTAMP(8)| YYYYMMDD| TIMESTAMP(6)| YYMMDD| TIMESTAMP(4)| YYMM| TIMESTAMP(2)| YY+ -+“完整” TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的显示尺 寸创造最常见的显示尺寸是6、8 12、和14。你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会 被强制定义为列长14。列长在从1 13范围的奇数值尺寸均被强制为下一个更大的偶数。咧如:*定义字段长度TIMESTAMP(O)-TI

4、MESTAMP(15)-TIMESTAMP(I)-TIMESTAMP(5)-强制字段长度TIMESTAMP(14)TIMESTAMP(14)TIMESTAMP(2)TIMESTAMP(6)所有的TIMESTAMP列都有同样的存储大小,使用被指定的时期时间值的完整 精度(14位)存储合法的值不考虑显示尺寸。不合法的日期,将会被强制为0存储*这有几个含意:1、虽然你建表时定义了列TIMESTAMP(8),但在你进行数据插入与更新时TIMESTAMP 歹 I实际上保存了 14位的数据;包括年月日时分秒)只不过在你进行查询时MySQL返回给你的是8位的年月日数据。如果你使用ALTER TABLE拓宽一

5、个狭窄的TIMESTAMP 列,以前被“隐蔽”的信息将被显示。2、同样,缩小一个TIMESTAMP列不会导致信息失去,除了感觉上值在显示时, 较少的信息被显示出。3、尽管TIMESTAMP值被存储为完整精度,直接操作存储值的唯一函数是UNIX_TIMESTAMP(); 由于MySQL返回TIMESTAMP列的列值是进过格式化后的检索的值,这意味 着你可能不能使用某些函数来操作TIMESTAMP列(例如HOUR()或 SECONDO ),除非TIMESTAMP值的相关部分被包含在格式化的值中。例如,一个TIMESTAMP列只有被定义为TIMESTAMP(10)以上时, TIMESTAMP列的HH

6、部分才会被显示,因此在更短的TIMESTAMP值上使用HOUR()会产生一个不可预知的结果。4、不合法TIMESTAMP值被变换到适当类型的“零”值(00000000000000)。(DATETIME,DATE 亦然)*你可以使用下列语句来验证:*CREATE TABLE test (id INT (3) UNSIGNED AUTO_INCREMENT, dateTTIMESTAMP PRIMARY KEY(id);INSERT INTO test SET id = 1;SELECT * FROM test;+ +| id | datel|+| 1 |20021114|+ +ALTER TAB

7、LE test CHANGE dateT dateT TIMESTAMP(14);SELECT * FROM test;+ + | id | date1| 1 |20021114093723|你可以使用TIMESTAMP列类型自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果你有多个TIMESTAMP列,只有第一个自动更新。自动更新第一个TIMESTAMP列在下列任何条件下发生:1、列值没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。2、列值没有明确地在一个UPDATE语句中指定且另外一些的列改变值。(注意个 UPDATE设置一个列为它已经有的值,这将

8、不引起TIMESTAMP列被更新,因为如果你设置一个列为它当前的值,MySQL为了效率而忽略更改。)3、你明确地设定TIMESTAMP列为NULL.4、除第一个以外的TIMESTAMP列也可以设置到当前的日期和时间,只要将列 设为 NULL,或 NOW()。CREATE TABLE test (id INT (3) UNSIGNED AUTO_INCREMENT,date1 TIMESTAMP (14),date2 TIMESTAMP (14),PRIMARY KEY(id)INSERT INTO test (id、datel、date2) VALUESpNULL、NULL)INSERTINT

9、O test SET id 2+ +id 一 datel-date2+一 1 一 20021114093723 一 20021114093723 一一 2 一 20021114093724 一 00000000000000 一+ + vffiHdatel date2 甘 NU匚、耳龙datel date2ffisl!K剖專H游血菇 datel date2 5_ffi、TIMESTAMP 旦 datel 倒MT TIMESTAMP s date2 80000000000000 UPDATE test SET id 3 WHERE idulj+ +一 id - datel - date2 -+一

10、3 一 20021114094009 一 20021114093723 一一 2 一 20021114093724 一 00000000000000 一+ +-这条指令没有明确地设定date2的列值,所以第一个TIMESTAMP列datel将被更新为当前时间UPDATE test SET id= 1,date1二date1,date2二NOW() WHERE id=3;+| id | date1| date2|+| 1 | 20021114094009 | 20021114094320 | 2 | 20021114093724 | 00000000000000 |+ +-这条指令因设定date

11、1=date1,所以在更新数据时date1列值并不会发生改 变而因设定date2=NOW(),所以在更新数据时date2列值会被更新为当前时间此指令等效为UPDATE test SET id= 1,date1=date1,date2 = NULL WHERE id = 3;因MySQL返回的TIMESTAMP列为数字显示形式,你可以用DATE_FROMAT()函数来格式化TIMESTAMP歹ISELECT id,DATE_FORMAT(date1,%Y-%m-%d %H:%i:%s) As date1,DATE_FORMAT(date2,%Y-%m-%d %H:%i:%s) As date2

12、FROM test;| date2| id | date1| 1 | 2002-11-14 09:40:09 | 2002-11-14 09:43:20 | 2 | 2002-11-14 09:37:24 | 0000-00-00 00:00:00 |+ +SELECT id,DATE_FORMAT(date1,%Y-%m-%d) As date1,DATE_FORMAT(date2,%Y-%m-%d) As date2 FROM test;+ +| id | date1| date2|+-+-+| 1|2002-11-14|2002-11-14| 2|2002-11-14| 0000-00-

13、00+-+-+在某种程度上,你可以把一种日期类型的值赋给一个不同的日期类型的对象。 然而,而尤其注意的是:值有可能发生一些改变或信息的损失:1、如果你将一个DATE值赋给一个DATETIME或TIMESTAMP对象,结果值 的时间部分被设置为00:00:00,因为DATE值中不包含有时间信息。2、如果你将一个DATETIME或TIMESTAMP值赋给一个DATE对象,结果值 的时间部分被删除, 因为DATE类型不存储时间信息。3、尽管DATETIME, DATE和TIMESTAMP值全都可以用同样的格式集来指定,但所有类型不都有同样的值范围。例如,TIMESTAMP值不能比1970早,也不能比

14、2037晚,这意味着,一个日 期例如1968-01-01,当作为一个DATETIME或DATE值时它是合法的,但它不是一个正确TIMESTAMP 值!并且如果将这样的一个对象赋值给TIMESTAMP列,它将被变换为0。*当指定日期值时,当心某些缺陷:*1、允许作为字符串指定值的宽松格式能被欺骗。例如,因为“”分隔符的使 用,值10:11:12可能看起来像时间值,但是如果在一个日期中使用,上下文将作为年份被解释成2010-11-12。值10:45:15将被变换到0000-00-00,因为45不是一 个合法的月份。2、以2位数字指定的年值是模糊的,因为世纪是未知的。MySQL使用下列规则解释2位年值:在00-69范围的年值被变换到2000-2069。在范围70-99的年值被变换到1970-1999。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号