说到数据库时间类型,大部分同学都会想到date、datetime、timestamp之类的。

我之前在项目遇到一个问题,测试同事在测试时,由于会测试205几年的数据,在入库时会抛出数据库异常,原因就是timestamp是有最大年份限制的。

下面先说说datetime与timestamp的区别:

datetime的默认值为null,timestamp的默认值不为null,且为系统当前时间(current_timestatmp)。如果不做特殊处理,且update没有指定该列更新,则默认更新为当前时间。

datetime占用8个字节,timestamp占用4个字节。timestamp利用率更高。

二者存储方式不一样,对于timestamp,它把客户端插入的时间从当前时区转化为世界标准时间(UTC)进行存储,查询时,逆向返回。但对于datetime,基本上存什么是什么。

二者范围不一样。timestamp范围:‘1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’; datetime范围:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’。原因是,timestamp占用4字节,能表示最大的时间毫秒为2的31次方减1,也就是2147483647,换成时间刚好是2038-01-19 03:14:07.999999。

Mysql中常用到的时间相关的函数:

常用函数

Mysql服务器的三种时区设置

系统时区 - 保存在系统变量system_time_zone

服务器时区 - 保存在全局系统变量global.time_zone

每个客户端连接的时区 - 保存在会话变量session.time_zone

注意:客户端时区,会影响一些日期函数返回值的显示,例如:now()、curtime()、curdate(),也影响timestamp列值的显示。

默认情况下,客户端时区和服务器时区相同,均为SYSTEM,表示使用系统时区。

函数特殊说明

1、NOW([fsp]):返回服务器的当前日期和时间(fsp指定小数秒的精度,取值0--6)

now()函数的同义词有:CURRENT_TIMESTAMP 、 CURRENT_TIMESTAMP()、LOCALTIMESTAMP 、 LOCALTIMESTAMP()、LOCALTIME 、 LOCALTIME()。

2、SYSDATE( ):返回服务器的当前日期和时间。

与now()不同之处,now()返回语句执行时间,sysdate()返回函数执行时间。

3、CURTIME([fsp]):返回当前时间,只包含时分秒(fsp指定小数秒的精度,取值0--6)

同义词有:CURRENT_TIME 、 CURRENT_TIME()

4、CURDATE():返回当前日期,只包含年月日

同义词有: CURRENT_DATE 、CURRENT_DATE()

5、TIMEDIFF(expr1, expr2):返回两个日期相减(expr1 − expr2 )相差的时间数(两个参数类型必须相同)

mysql> select timediff('18:32:59','60000');

+------------------------------+

| timediff('18:32:59','60000') |

+------------------------------+

| 12:32:59 |

+------------------------------+

mysql> select timediff('18:32:59','2017-1-1 60000');

+---------------------------------------+

| timediff('18:32:59','2017-1-1 60000') |

+---------------------------------------+

| NULL |

+---------------------------------------+

DATEDIFF(expr1, expr2):返回两个日期相减(expr1 − expr2 )相差的天数。

mysql> select datediff('2017-3-24 18:32:59','2016-9-1');

+-------------------------------------------+

| datediff('2017-3-24 18:32:59','2016-9-1') |

+-------------------------------------------+

| 204 |

+-------------------------------------------+

6、日期时间运算函数:分别为给定的日期date加上(add)或减去(sub)一个时间间隔值expr

DATE_ADD(date, INTERVAL  expr  unit);

DATE_SUB(date, INTERVAL  expr  unit);

interval是间隔类型关键字

expr是一个表达式,对应后面的类型

unit是时间间隔的单位(间隔类型)(20个)

hour - 小时;minute - 分;second - 秒;microsecond - 毫秒; year - 年;month - 月;

day - 日;  week - 周; quarter - 季; year_month - 年和月;day_hour - 日和小时;

day_minute - 日和分钟;day_second - 日和秒;hour_minute - 小时和分;hour_second - 小时和秒;

minute_second - 分钟和秒。

mysql> select now(),date_add(now(),interval 1day);  #加一天+---------------------+--------------------------------+

| now() | date_add(now(),interval 1 day) |

+---------------------+--------------------------------+

| 2017-03-24 14:53:08 | 2017-03-25 14:53:08 |

+---------------------+--------------------------------+mysql> SELECT date_sub('2005-01-01 00:00:00',INTERVAL '1 1:1:1'DAY_SECOND);  #减1天1小时1分1秒+---------------------------------------------------------------+

| date_sub('2005-01-01 00:00:00',INTERVAL '1 1:1:1' DAY_SECOND) |

+---------------------------------------------------------------+

| 2004-12-30 22:58:59 |

+---------------------------------------------------------------+

7、选取日期时间的各个部分:日期、时间、年、季度、月、日、小时、分钟、秒、微秒(常用)

SELECT now(),date(now()); -- 日期

SELECT now(),time(now()); -- 时间

SELECT now(),year(now()); -- 年

SELECT now(),quarter(now()); -- 季度

SELECT now(),month(now()); -- 月

SELECT now(),week(now()); -- 周

SELECT now(),day(now()); -- 日

SELECT now(),hour(now()); -- 小时

SELECT now(),minute(now()); -- 分钟

SELECT now(),second(now()); -- 秒

SELECT now(),microsecond(now()); -- 微秒

EXTRACT(unit  FROM  date):从日期中抽取出某个单独的部分或组合

SELECT now(),extract(YEAR FROM now()); -- 年

SELECT now(),extract(QUARTER FROM now()); -- 季度

SELECT now(),extract(MONTH FROM now()); -- 月

SELECT now(),extract(WEEK FROM now()); -- 周

SELECT now(),extract(DAY FROM now()); -- 日

SELECT now(),extract(HOUR FROM now()); -- 小时

SELECT now(),extract(MINUTE FROM now()); -- 分钟

SELECT now(),extract(SECOND FROM now()); -- 秒

SELECT now(),extract(YEAR_MONTH FROM now()); -- 年月

SELECT now(),extract(HOUR_MINUTE FROM now()); -- 时分

mysql date timestamp_【Mysql】Datetime和Timestamp区别,及mysql中各种时间的使用相关推荐

  1. 数据库的字段是date java里面能用timestamp吗_数据库中DATETIME,DATE和TIMESTAMP类型 的区别...

    满意答案 KakiZoR 2017.03.29 采纳率:59%    等级:9 已帮助:668人 当你需要同时包含日期和时间信息的值时则使用DATETIME类型.MySQL以'YYYY-MM-DD H ...

  2. mysql date time year_YEAR、DATE、TIME、DATETIME和TIMESTAMP详细介绍[MySQL数据类型]

    为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型,分别是YEAR.DATE.TIME.DATETIME和TIMESTAMP.下面列举了这些MSL中日期和时间数据类型所对应的字 ...

  3. php和mysql时间类型,MySQL_Mysql中的Datetime和Timestamp比较,mysql中用于表示时间的三种类 - phpStudy...

    Mysql中的Datetime和Timestamp比较 mysql中用于表示时间的三种类型date, datetime, timestamp (如果算上int的话,四种) 比较容易混淆,下面就比较一下 ...

  4. mysql date 默认值_通过Oracle DB了解MySQL

    Oracle数据库是业界的翘楚,各行各业拥有大量的Oracle DB的DBA,本文尝试通过将Oracle与MySQL数据库的架构.安全.模式对象.数据类型及数据存储进行对比,以方便熟悉Oracle数据 ...

  5. oracle 中DATETIME与TIMESTAMP区别

    1.DATETIME的日期范围是1001--9999年,TIMESTAMP的时间范围是1970--2038年. 2.DATETIME存储时间与时区无关,TIMESTAMP存储时间与时区有关,显示的值也 ...

  6. MySQL 时间类型 DATE、DATETIME和TIMESTAMP

    1.DATE.DATETIME和TIMESTAMP 表达的时间范围 Type Range Remark DATE '1000-01-01' to '9999-12-31' 只有日期部分,没有时间部分 ...

  7. MySQL Date,DateTime和Timestamp类型

    Datetime类型用于存储同时包含日期和时间的值,MySQL检索并以"YYYY-MM-DD HH:MM:SS"格式显示Datetime值,支持范围是1000-01-01 00:0 ...

  8. mysql 时间日期类型 datetime、timestamp、date、time、year

    MySQL中有多处表示日期的数据类型:YEAR.TIME.DATE.DTAETIME.TIMESTAMP.当只记录年信息的时候,可以只使用 YEAR 类型. 每一个类型都有合法的取值范围,当指定确定不 ...

  9. MySQL日期和时间数据类型(DATE、TIME、 DATETIME、 TIMESTAMP和YEAR)

    目录 日期和时间数据类型语法 Date DATETIME和DATETIME(fsp) TIMESTAMP和TIMESTAMP[(fsp)] TIME和TIME(fsp) YEAR和YEAR(4) 本文 ...

最新文章

  1. 一维码Codabar简介及其解码实现(zxing-cpp)
  2. 如何找到存在Ceph里面的文件
  3. 【自动驾驶】Eigen:矩阵Matrix的使用
  4. HTTP一次完整的http请求所经历的步骤
  5. ABAP Development Tool IDE里编写的CDS view源代码是如何传递到ABAP后台并解析的
  6. c语言学生成绩查询课设报告,C语言课设报告(学生考试成绩查询程序)【荐】.doc...
  7. LeetCode 1691. 堆叠长方体的最大高度(排序+最大上升子序DP)
  8. Python 多进程
  9. 2014年5月30日
  10. 几款流行的开源后台管理框架
  11. 一拳超人手游显示服务器断开,一拳超人最强之男游戏无法登陆怎么办 解决方案一览...
  12. 常用坐标系汇总(更新)
  13. 接口文档编写步骤与格式
  14. c++调节控制台字体(c++入门练习)
  15. 越来越卷,教你使用Python实现卷积神经网络(CNN)
  16. virtualbox kali linux 安装小米随身wifi
  17. 【ICCV19 超分辨】Deep SR-ITM: Joint Learning of Super-Resolution and Inverse Tone-Mapping for 4K UHD HDR
  18. Xmind8Update7安装与Xmind8Update7破解
  19. ERPNext关键业务流程
  20. 希尔排序原理和算法图解

热门文章

  1. windows下安装mongodb服务
  2. 2010年高教社杯全国大学生数学建模竞赛题目B题解析及层次分析法AHP在其中的应用
  3. SpringBoot-异常处理
  4. pythonpy文件打包成exe软件
  5. Python高级——property属性
  6. 源码分析参考:Connection
  7. finalize到底是什么
  8. PRML-系列一之1.5.1~1.5.3
  9. jar java classpath_Java ClassLoader和ClassPath
  10. 移动web-触摸事件touch