为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > mysql日期时间函数

mysql日期时间函数

2018-03-21 9页 doc 24KB 15阅读

用户头像

is_358746

暂无简介

举报
mysql日期时间函数mysql日期时间函数 MySQL 日期跟时间函数(一) 作者: Mr.Zhang MySQL 日期跟时间的样式 在MySQL 中有很多有用处的日期跟时间函数。我们常常看到许多应用于日期的计算是在代码 方面上进行的,但是其实他们完全可以使用MySQL中自带的函数来实现。在我们实际的查看MySQL 的时间跟日期函数之前,先让我们看看MySQL 的存储内容。 DATETIME YYYY-MM-DD HH:MM:SS DATE YYYY-MM-DD TIMESTAMP YYYYMMDDHHSSMM TIME HH...
mysql日期时间函数
mysql日期时间函数 MySQL 日期跟时间函数(一) 作者: Mr.Zhang MySQL 日期跟时间的样式 在MySQL 中有很多有用处的日期跟时间函数。我们常常看到许多应用于日期的计算是在代码 方面上进行的,但是其实他们完全可以使用MySQL中自带的函数来实现。在我们实际的查看MySQL 的时间跟日期函数之前,先让我们看看MySQL 的存储。 DATETIME YYYY-MM-DD HH:MM:SS DATE YYYY-MM-DD TIMESTAMP YYYYMMDDHHSSMM TIME HH:MM:SS YEAR YYYY TIMESTAMP 栏存储了所有的14 个字符,但是你其实可以自己定义他的显示方式。例如如果 你按照TIMESTAMP(2)的方式来定义,那么只会显示出2 位表示的年份,但是所有的数据仍然是被 保存的。如果日后你想要列出所有的数据的时候,你只需要改变下限定条件,所有的内容就会显现 出来。下表就是不同的定义以及表现的结果。 TIMESTAMP(14) YYYYMMDDHHMMSS TIMESTAMP(12) YYMMDDHHMMSS TIMESTAMP(10) YYMMDDHHMM TIMESTAMP(8) YYYYMMDD TIMESTAMP(6) YYMMDD TIMESTAMP(4) YYMM TIMESTAMP(2) YY MySQL 对于所读入的日期的格式是非常宽容的。虽然MySQL 有使用很广的约定表现方式,你 仍然可以改用你喜欢的方式来表现。例如,你创建如下一个表: CREATE TABLE time_table(dt DATETIME); 既可以使用如下约定的方式插入一条记录: INSERT INTO time_table(dt) VALUES('2003-03-31 11:22:12'); 也可以象这样用’+’和’=’来实现: INSERT INTO time_table(dt) VALUES('2003=03=31 11+22+12'); 当然,虽然这种方法可行,但是如果没有必要,还是推荐你使用约定的方式。 简单的日期计算 日期计算非常简单。我们首先要查看的一个函数是YEAR() 。For example: mysql> SELECT YEAR('2003-03-31'); +--------------------+ | YEAR('2003-03-31') | +--------------------+ | 2003 | +--------------------+ 我们可以用“+”,“-”运算符,直接进行一些简单的运算。例如你要察看该日期5 年后是哪一年, you can use: mysql> SELECT YEAR('2003-03-31')+5; +----------------------+ | YEAR('2003-03-31')+5 | +----------------------+ | 2008 | +----------------------+ 那么同理,5 年前的日期: mysql> SELECT YEAR('2003-03-31')-5; +----------------------+ | YEAR('2003-03-31')-5 | +----------------------+ | 1998 | +----------------------+ 当然,你也可能有不知道具体时间的时候,MySQL 给你提供了NOW() function: mysql> SELECT NOW(); +---------------------+ | | NOW() +---------------------+ | 2003-03-31 00:32:21 | +---------------------+ 或者CURRENT_DATE() function 只用来提供年月日: mysql> SELECT CURRENT_DATE(); +----------------+ | CURRENT_DATE() | +----------------+ | 2003-03-31 | +----------------+ 当然也有其他的时间间隔取值函数: MONTH(), DAYOFMONTH(), HOUR(), MINUTE() and SECOND(). For example: mysql> SELECT MONTH(NOW()) AS m, DAYOFMONTH(NOW()) AS d, HOUR(NOW()) AS h, MINUTE(NOW()) AS m, SECOND(NOW()) AS s; +------+------+------+------+------+ | m | d | h | m | s | +------+------+------+------+------+ | 3 | 31 | 1 | 53 | 38 | +------+------+------+------+------+ DAYOFMONTH() function 是命名规范的一个例外,因为他用了其他的方式返回日期。 DAYOFMONTH() 返回的1-31 的天数,DAYNAME() 返回的是现实中的哪一天, DAYOFWEEK() DAYOFYEAR() 返回的是1 到366。 返回的是1 (Sunday) to 7(Saturday) , Some examples: mysql> SELECT DAYNAME('2000-01-01'); +-----------------------+ | DAYNAME('2000-01-01') | +-----------------------+ | Saturday | +-----------------------+ mysql> SELECT DAYOFWEEK('2000-01-01'); +-------------------------+ | DAYOFWEEK('2000-01-01') | +-------------------------+ | 7 | +-------------------------+ mysql> SELECT DAYOFYEAR('2000-12-31'); +-------------------------+ | DAYOFYEAR('2000-12-31') | +-------------------------+ | 366 | +-------------------------+ 计算年龄 最常用的日期计算就是年龄计算,不幸得是,并没有什么函数可以直接实现这个功能,所以这 就需要我们稍微的动下脑筋,现在让我们来做一些简单的数学计算--你会发现我从当前时间开始(31 March 2003)。首先,我们简单的从当前日期减掉出生日期: mysql> SELECT YEAR(CURRENT_DATE)-YEAR('1971-01-01'); +---------------------------------------+ | YEAR(CURRENT_DATE)-YEAR('1971-01-01') | +---------------------------------------+ | 32 | +---------------------------------------+ 如果你直接回复这个数字,那么明显的,计算是正确的。某个出生于1971 年1 月1 日的人到 2003 年3 月31 日是32 岁。但是如果是出生在12 月31 日的人呢: mysql> SELECT YEAR(CURRENT_DATE)-YEAR('1971-12-31'); +---------------------------------------+ | YEAR(CURRENT_DATE)-YEAR('1971-12-31') | +---------------------------------------+ | 32 | +---------------------------------------+ 年龄出错了,这个人还没有到32 岁。问题在于计算的时候只计算了年份,他只用年份相减, 忽视了月份和日期,最好的比较方式还是要用日期和月份先进行比较,看是否出生日期小于当前日 期, 如果是这样,那只需要计算年份,否则就需要减去一部分年份。这个听起来非常狡诈,但是事 实上不是。让我们慢慢理解一下,MySQL 中对于TRUE 用1 表示。FALSE 用0 表示的方式对我们 有很大的帮助,For example: mysql> SELECT 23>19; +-------+ | 23>19 | +-------+ | 1 | +-------+ mysql> SELECT 23<19; +-------+ | 23<19 | +-------+ | 0 | +-------+ 23 >19(true), so MySQL 返回'1', 并且23 不小于19(false), so MySQL 返回'0'。现 在我们 需要一种方式来返回'MM-DD' 的日期形式, 幸运的是,现在我们有一个可以直接使用的函 数了, RIGHT(), 它用于返回从右开始的定义的位数的数值。 For example: mysql> SELECT RIGHT('abcdef',2); +-------------------+ | RIGHT('abcdef',2) | +-------------------+ | ef | +-------------------+ 这样就返回了从右开始数,2 位的数值'ef '。当然如果你要求的位数超过纪录的位数,将显 示 全部内容: mysql> SELECT RIGHT('abcdef',9); +-------------------+ | RIGHT('abcdef',9) | +-------------------+ | abcdef | +-------------------+ 所以为了返回'MM-DD' 的样式,你需要返回5 位数据,for example: mysql> SELECT RIGHT(CURRENT_DATE(),5); +-------------------------+ | RIGHT(CURRENT_DATE(),5) | +-------------------------+ | 03-31 | +-------------------------+ 现在我们就有了计算一个年龄的所有的数据,可以用下面的方法来计算了: mysql> SELECT YEAR(CURRENT_DATE()) - YEAR('1971-12-31') - (RIGHT(CURRENT_DATE(),5)<'12-31') AS age; +------+ | age | +------+ | 31 | +------+ 现在让我们来看一些不太常见的函数。首先我们来看看MySQL 为这些函数定义的可以接 受的 数据类型。 SECOND ss MINUTE mm HOUR hh DAY DD MONTH MM YEAR YY MINUTE_SECOND mm:ss HOUR_MINUTE hh:mm DAY_HOUR DD:hh YEAR_MONTH YYYY-MM HOUR_SECOND hh:s
/
本文档为【mysql日期时间函数】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索