MySQL中日期与时间类型

Wesley13
• 阅读 838

MySQL中日期与时间类型

1、MySQL的五种日期和时间类型

MySQl中有多种表示日期和时间的数据类型。其中YEAR表示年份,DATE表示日期,TIME表示时间,DATETIME和TIMESTAMP分别表示日期和时间。

它们的对比如下:

YEAR ,字节数为1,取值范围为“1901——2155”

DATE,字节数为4,取值范围为“1000-01-01——9999-12-31”

TIME,字节数为3,取值范围为“-838:59:59——838:59:59”

DATETIME,字节数为8,取值范围为“1000-01-01 00:00:00——9999-12-31 23:59:59”

TIMESTAMP,字节数为4,取值范围为“19700101080001——20380119111407”

当插入值超出有效取值范围时,系统就会报错,并将零值插入到数据库中。

2、YEAR类型

  给YEAR类型赋值有三种方法。

  第一种是直接插入4位字符串或者4位数字。

  第二种是插入2位字符串,这种情况下如果插入‘00’‘69’,则相当于插入20002069;如果插入‘70’‘99’,则相当于插入19701999。第二种情况下插入的如果是‘0’,则与插入‘00’效果相同,都是表示2000年。

  第三种是插入2位数字,它与第二种(插入两位字符串)不同之处仅在于:如果插入的是一位数字0,则表示的是0000,而不是2000年,所以在给YEAR类型赋值时,一定要分清0和‘0’,虽然两者只是相差了一个引号,但是其实际效果却相差了2000年。

3、TIME类型

TIME类型表示为“时:分:秒”,尽管小时范围一般是0~23,但是为了表示某些特殊时间间隔,MySQL将TIME的小时范围扩展了,而且支持负值(用于支持运算)。

对TIME类型赋值,标准格式是‘HH:MM:SS’,但不一定非要是这种格式。

如果插入的是‘D HH:MM:SS’格式,则类似插入了‘(D*24+HH):MM:SS’。比如插入‘2 23:50:50’,相当于插入了‘71:50:50’。

如果插入的是‘HH:MM’或‘SS’格式,则效果是其他未被表示位的值赋为零值。比如插入‘30’,相当于插入了‘00:00:30’;如果插入‘11:25’,相当于插入了‘11:25:00’。

另外也可以插入‘D HH’和‘D HH:MM’,效果按上面的例子可以推理出来了吧。

在MySQl中,对于'HHMMSS'格式,系统能够自动转化为标准格式。

如果我们想插入当前系统的时间,则可以插入CURRENT_TIME或者NOW()。

TIME类型只占3个字节,如果存储的只是时间数据,那么它是最合适了。

4、DATE类型

  MySQL是以YYYY-MM-DD格式来显示DATE类型的值,插入数据时,数据可以保持这种格式。

  另外,MySQL还支持一些不严格的语法格式,分隔符“-”可以用“@”、“.”等众多符号来替代。

  在插入数据时,也可以使用“YY-MM-DD”格式,YY转化成对应的年份的规则与YEAR类型类似。

  如果我们想插入当前系统的时间,则可以插入CURRENT_DATE或者NOW()。

5、DATETIME类型

  标准格式为“YYYY-MM-DD HH:MM:SS”,具体赋值方法与上面各种类型的方法相似。

6、TIMESTAMP类型

  TIMESTAMP的取值范围比较小,没有DATETIME的取值范围大,因此输入值时一定要保证在TIMESTAMP的范围之内。它的插入也与插入其他日期和时间数据类型类似。  那么TIMESTAMP类型如何插入当前时间?

第一,可以使用CURRENT_TIMESTAMP;

第二,输入NULL,系统自动输入当前的TIMESTAMP;

第三,无任何输入,系统自动输入当前的TIMESTAMP。
  另外有很特殊的一点:TIMESTAMP的数值是与时区相关。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Karen110 Karen110
3年前
一篇文章带你了解JavaScript日期
日期对象允许您使用日期(年、月、日、小时、分钟、秒和毫秒)。一、JavaScript的日期格式一个JavaScript日期可以写为一个字符串:ThuFeb02201909:59:51GMT0800(中国标准时间)或者是一个数字:1486000791164写数字的日期,指定的毫秒数自1970年1月1日00:00:00到现在。1\.显示日期使用
Wesley13 Wesley13
3年前
java常用类(2)
三、时间处理相关类Date类:计算机世界把1970年1月1号定为基准时间,每个度量单位是毫秒(1秒的千分之一),用long类型的变量表示时间。Date分配Date对象并初始化对象,以表示自从标准基准时间(称为“历元”(epoch),即1970年1月1日08:00:00GMT)以来的指定毫秒数。示例:packagecn.tanjian
皕杰报表(关于日期时间时分秒显示不出来)
在使用皕杰报表设计器时,数据据里面是日期型,但当你web预览时候,发现有日期时间类型的数据时分秒显示不出来,只有年月日能显示出来,时分秒显示为0:00:00。1.可以使用tochar解决,数据集用selecttochar(flowdate,"yyyyMMddHH:mm:ss")fromtablename2.也可以把数据库日期类型date改成timestamp
Wesley13 Wesley13
3年前
mysql简单常用语句汇总
1\.常用函数uuid和时间戳SELECTUUID(),UNIX_TIMESTAMP();将时间戳转为日期格式FROM_UNIXTIME(mw.created_at,'%Y%m%d%H:%i:%s')设置参数select@m_no:max(m_no)fromvc_m;set@m
Wesley13 Wesley13
3年前
mysql中时间比较的实现
MySql中时间比较的实现unix\_timestamp()unix\_timestamp函数可以接受一个参数,也可以不使用参数。它的返回值是一个无符号的整数。不使用参数,它返回自1970年1月1日0时0分0秒到现在所经过的秒数,如果使用参数,参数的类型为时间类型或者时间类型的字符串表示,则是从1970010100:00:0
Stella981 Stella981
3年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Wesley13 Wesley13
3年前
Java日期时间API系列34
  通过Java日期时间API系列9Jdk8中java.time包中的新的日期时间API类的Period和Duration的区别(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.cnblogs.com%2Fxkzhangsanx%2Fp%2F12110137.html)
Stella981 Stella981
3年前
HIVE 时间操作函数
日期函数UNIX时间戳转日期函数: from\_unixtime语法:   from\_unixtime(bigint unixtime\, string format\)返回值: string说明: 转化UNIX时间戳(从19700101 00:00:00 UTC到指定时间的秒数)到当前时区的时间格式举例:hive   selec
Wesley13 Wesley13
3年前
PHP中的NOW()函数
是否有一个PHP函数以与MySQL函数NOW()相同的格式返回日期和时间?我知道如何使用date()做到这一点,但是我问是否有一个仅用于此的函数。例如,返回:2009120100:00:001楼使用此功能:functiongetDatetimeNow(){