mysql的日期和时间函数
mysql的日期和时间函数这里是一个使用日期函数的例子。下面的查询选择所有 date_col 值在最后 30 天内的记录。 mysql SELECT something FROM tbl_name WHERE TO_DAYS) - TO ...
mysql的日期和时间函数 /google 的广告条-->
这里是一个使用日期函数的例子。下面的查询选择所有 date_col 值在最后 30 天内的记录。
mysql SELECT something FROM tbl_name WHERE TO_DAYS) - TO_DAYS = 30;DAYOFWEEK 返回 date 的星期索引。索引值符合 ODBC 的标准。
mysql SELECT DAYOFWEEK;- 3WEEKDAY 返回 date 的星期索引:
mysql SELECT WEEKDAY;- 1mysql SELECT WEEKDAY;- 2DAYOFMONTH 返回 date 是一月中的第几天,范围为 1 到 31:
mysql SELECT DAYOFMONTH;- 3DAYOFYEAR 返回 date 是一年中的第几天,范围为 1 到 366:
mysql SELECT DAYOFYEAR;- 34MONTH 返回 date 中的月份,范围为 1 到 12:
mysql SELECT MONTH;- 2DAYNAME 返回 date 的星期名:
mysql SELECT DAYNAME;- ‘Thursday‘MONTHNAME 返回 date 的月份名:
mysql SELECT MONTHNAME;- ‘February‘QUARTER 返回 date 在一年中的季度,范围为 1 到 4:
mysql SELECT QUARTER;- 2WEEK WEEK 对于星期日是一周中的第一天的场合,如果函数只有一个参数调用,返回 date 为一年的第几周,返回值范围为 0 到 53 。两个参数形式的 WEEK 允许你指定一周是否以星期日或星期一开始,以及返回值为 0-53 还是 1-52。 这里的一个表显示第二个参数是如何工作的: 值 含义 0 一周以星期日开始,返回值范围为 0-53 1 一周以星期一开始,返回值范围为 0-53 2 一周以星期日开始,返回值范围为 1-53 3 一周以星期一开始,返回值范围为 1-53
mysql SELECT WEEK;- 7mysql SELECT WEEK;- 7mysql SELECT WEEK;- 8mysql SELECT WEEK;- 53注意,在版本 4.0 中,WEEK 被更改为匹配 USA 历法。 注意,如果一周是上一年的最后一周,当你没有使用 2 或 3 做为可选参数时,MySQL 将返回 0:
mysql SELECT YEAR, WEEK;- 2000, 0mysql SELECT WEEK;- 52你可能会争辩说,当给定的日期值实际上是 1999 年的第 52 周的一部分时,MySQL 对 WEEK 函数应该返回 52。我们决定返回 0 ,是因为我们希望该函数返回“在指定年份中是第几周”。当与其它的提取日期值中的月日值的函数结合使用时,这使得 WEEK 函数的用法可靠。 如果你更希望能得到恰当的年-周值,那么你应该使用参数 2 或 3 做为可选参数,或者使用函数 YEARWEEK :
mysql SELECT YEARWEEK;- 199952mysql SELECT MID,5,2);- 52YEAR 返回 date 的年份,范围为 1000 到 9999:
mysql SELECT YEAR;- 1998YEARWEEK YEARWEEK 返回一个日期值是的哪一年的哪一周。第二个参数的形式与作用完全与 WEEK 的第二个参数一致。注意,对于给定的日期参数是一年的第一周或最后一周的,返回的年份值可能与日期参数给出的年份不一致:
mysql SELECT YEARWEEK;- 198653注意,对于可选参数 0 或 1,周值的返回值不同于 WEEK 函数所返回值, WEEK 根据给定的年语境返回周值。 HOUR 返回 time 的小时值,范围为 0 到 23:
mysql SELECT HOUR;- 10MINUTE 返回 time 的分钟值,范围为 0 到 59:
mysql SELECT MINUTE;- 5SECOND 返回 time 的秒值,范围为 0 到 59:
mysql SELECT SECOND;- 3PERIOD_ADD 增加 N 个月到时期 P中。以 YYYYMM 格式返回值。 注意,期间参数 P 不是 一个日期值:
mysql SELECT PERIOD_ADD;- 199803PERIOD_DIFF 返回时期 P1 和 P2 之间的月数。P1 和 P2 应该以 YYMM 或 YYYYMM 指定。 注意,时期参数 P1 和 P2 不是 日期值:
mysql SELECT PERIOD_DIFF;- 11DATE_ADD DATE_SUB ADDDATE SUBDATE 这些函数执行日期的算术运算。ADDDATE 和 SUBDATE 分别是 DATE_ADD 和 DATE_SUB 的同义词。 在 MySQL 3.23 中,如果表达式的右边是一个日期值或一个日期时间型字段,你可以使用 + 和 - 代替 DATE_ADD 和 DATE_SUB。 参数 date 是一个 DATETIME 或 DATE 值,指定一个日期的开始。expr 是一个表达式,指定从开始日期上增加还是减去间隔值。expr 是一个字符串;它可以以一个 “-” 领头表示一个负的间隔值。type 是一个关键词,它标志着表达式以何格式被解释。 下表显示 type 和 expr 参数是如何关联的: type 值 expr 期望的格式 SECOND SECONDS MINUTE MINUTES HOUR HOURS DAY DAYS MONTH MONTHS YEAR YEARS MINUTE_SECOND "MINUTES:SECONDS" HOUR_MINUTE "HOURS:MINUTES" DAY_HOUR "DAYS HOURS" YEAR_MONTH "YEARS-MONTHS" HOUR_SECOND "HOURS:MINUTES:SECONDS" DAY_MINUTE "DAYS HOURS:MINUTES" DAY_SECOND "DAYS HOURS:MINUTES:SECONDS" 在 expr 的格式中,MySQL 允许任何字符作为定界符。表中所显示的是建议的定界字符。如果 date 参数是一个 DATE 值,并且计算的间隔仅仅有 YEAR、MONTH 和 DAY 部分,那么返回值也是一个 DATE 值。否则返回值是一个 DATETIME 值:
mysql SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;- 1998-01-01 00:00:00mysql SELECT INTERVAL 1 DAY + "1997-12-31";- 1998-01-01mysql SELECT "1998-01-01" - INTERVAL 1 SECOND; - 1997-12-31 23:59:59mysql SELECT DATE_ADD;- 1998-01-01 00:00:00mysql SELECT DATE_ADD;- 1998-01-01 23:59:59mysql SELECT DATE_ADD;- 1998-01-01 00:01:00mysql SELECT DATE_SUB;- 1997-12-30 22:58:59mysql SELECT DATE_ADD;- 1997-12-30 14:00:00mysql SELECT DATE_SUB;- 1997-12-02如果你指定了一个太短的间隔值,MySQL 假设你遗漏了间隔值的最左边部分。例如,如果指定一个 type 为 DAY_SECOND,那么 expr 值被期望包含天、小时、分钟和秒部分。如果你象 "1:10" 样指定一个值,MySQL 假设天和小时部分被遗漏了,指定的值代表分钟和秒。换句话说,"1:10" DAY_SECOND 被解释为等价于 "1:10" MINUTE_SECOND。这类似于 MySQL 解释 TIME 值为经过的时间而不是一天的时刻。 注意,如果依着包含一个时间部分的间隔增加或减少一个日期值,该日期值将被自动地转换到一个日期时间值:
mysql SELECT DATE_ADD; - 1999-01-02mysql SELECT DATE_ADD; - 1999-01-01 01:00:00如果你使用了确定不正确的日期,返回结果将是 NULL。如果你增加 MONTH、YEAR_MONTH 或 YEAR,并且结果日期的天比新月份的最大天数还大,那么它将被调整到新月份的最大天数:
mysql SELECT DATE_ADD;- 1998-02-28注意,上面的例子中,单词 INTERVAL 和关键词 type 是不区分字母大小写的。
EXTRACT EXTRACT 函数使用与 DATE_ADD 或 DATE_SUB 一致的间隔类型,但是它用于指定从日期中提取的部分,而不是进行日期算术运算。
mysql SELECT EXTRACT; - 1999mysql SELECT EXTRACT; - 199907mysql SELECT EXTRACT; - 20102TO_DAYS 给出一个日期 date,返回一个天数:
mysql SELECT TO_DAYS;- 728779mysql SELECT TO_DAYS;- 729669TO_DAYS 无意于使用先于格里高里历法出现的值,因为它不考虑当历法改变时所遗失的天数。
FROM_DAYS 给出一个天数 N,返回一个 DATE 值:
mysql SELECT FROM_DAYS;- ‘1997-10-07‘FROM_DAYS 无意于使用先于格里高里历法出现的值,因为它不考虑当历法改变时所遗失的天数。
DATE_FORMAT 依照 format 字符串格式化 date 值。下面的修饰符可被用于 format 字符串中: 修饰符 含义 %M 月的名字 %W 星期的名字 %D 有英文后缀的某月的第几天 %Y 年份,数字的,4 位 %y 年份,数字的,2 位 %X 周值的年份,星期日是一个星期的第一天,数字的,4 位,与 ‘%V‘ 一同使用 %x 周值的年份,星期一是一个星期的第一天,数字的,4 位,与 ‘%v‘ 一同使用 %a 缩写的星期名 %d 月份中的天数,数字的 %e 月份中的天数,数字的 %m 月,数字的 %c 月,数字的 %b 缩写的月份名 %j 一年中的天数 %H 小时 %k 小时 %h 小时 %I 小时 %l 小时 %i 分钟,数字的 %r 时间,12 小时 %T 时间,24 小时 %S 秒 %s 秒 %p AM 或 PM %w 一周中的天数 %U 星期 ,星期日是一个星期的第一天 %u 星期 ,星期一是一个星期的第一天 %V 星期 ,星期日是一个星期的第一天。与 ‘%X‘ 一起使用 %v 星期 ,星期一是一个星期的第一天。与 ‘%x‘ 一起使用 %% 一个字母 “%” 所有其它的字符不经过解释,直接复制到结果中:
mysql SELECT DATE_FORMAT;- ‘Saturday October 1997‘mysql SELECT DATE_FORMAT;- ‘22:23:00‘mysql SELECT DATE_FORMAT;- ‘4th 97 Sat 04 10 Oct 277‘mysql SELECT DATE_FORMAT;- ‘22 22 10 10:23:00 PM 22:23:00 00 6‘mysql SELECT DATE_FORMAT;- ‘1998 52‘在 MySQL 3.23 中,在格式修饰符前需要字符 `%‘。在更早的 MySQL 版本中,`%‘ 是可选的。 月份与天修饰符的范围从零开始的原因是,在 MySQL 3.23 中,它允许存储不完善的日期值。
TIME_FORMAT 它的使用方法与上面的 DATE_FORMAT 函数相似,但是 format 字符串只包含处理小时、分和秒的那些格式修饰符。使用其它的修饰符会产生一个 NULL 值或 0。
CURDATE CURRENT_DATE 以 ‘YYYY-MM-DD‘ 或 YYYYMMDD 格式返回当前的日期值,返回的格式取决于该函数是用于字符串还是数字语境中:
mysql SELECT CURDATE;- ‘1997-12-15‘mysql SELECT CURDATE + 0;- 19971215CURTIME CURRENT_TIME 以 ‘HH:MM:SS‘ 或 HHMMSS 格式返回当前的时间值,返回的格式取决于该函数是用于字符串还是数字语境中:
mysql SELECT CURTIME;- ‘23:50:26‘mysql SELECT CURTIME + 0;- 235026NOW SYSDATE CURRENT_TIMESTAMP 以 ‘YYYY-MM-DD HH:MM:SS‘ 或 YYYYMMDDHHMMSS 格式返回当前的日期时间值,返回的格式取决于该函数是用于字符串还是数字语境中:
mysql SELECT NOW;- ‘1997-12-15 23:50:26‘mysql SELECT NOW + 0;- 19971215235026注意,函数 NOW 在每个查询中只计算一次,也就是在查询开始执行时。这就是说,如果在一个单独的查询中多次引用了 NOW,它只会给出值都是一个相同的时间。
UNIX_TIMESTAMP UNIX_TIMESTAMP 如果调用时没有参数,以无符号的整数形式返回一个 Unix 时间戳。如果以一个参数 date 调用 UNIX_TIMESTAMP,它将返回该参数值从 ‘1970-01-01 00:00:00‘ GMT 开始经过的秒数值。date 可以是一个 DATE 字符串,一个 DATETIME 字符串,一个 TIMESTAMP,或者以一个 YYMMDD 或 YYYYMMDD 显示的本地时间:
mysql SELECT UNIX_TIMESTAMP;- 882226357mysql SELECT UNIX_TIMESTAMP;- 875996580当 UNIX_TIMESTAMP 被用于一个 TIMESTAMP 列时,函数直接返回一个内部的时间戳值,而不进行一个隐含地 “string-to-unix-timestamp” 转换。如果你传递一个超出范围的日期参数给 UNIX_TIMESTAMP ,它将返回 0,但是请注意,MySQL 对其仅仅进行基本的检验。 如果你希望减去 UNIX_TIMESTAMP 列,你应该需要将结果强制转换为一有符号整数。查看章节 。
FROM_UNIXTIME 以 ‘YYYY-MM-DD HH:MM:SS‘ 或 YYYYMMDDHHMMSS 格式返回一个 unix_timestamp 参数值,返回值的形式取决于该函数使用于字符串还是数字语境。 如果 format 给出,返回值依 format 字符串被格式。format 可以包含与 DATE_FORMAT 函数同样的修饰符。
mysql SELECT FROM_UNIXTIME;- ‘1997-10-04 22:23:00‘mysql SELECT FROM_UNIXTIME + 0;- 19971004222300mysql SELECT FROM_UNIXTIME,‘%Y %D %M %h:%i:%s %x‘);- ‘1997 23rd December 03:43:30 1997‘SEC_TO_TIME 以 ‘HH:MM:SS‘ 或 HHMMSS 格式返回参数 seconds 被转换到时分秒后的值,返回值的形式取决于该函数使用于字符串还是数字语境:
mysql SELECT SEC_TO_TIME;- ‘00:39:38‘mysql SELECT SEC_TO_TIME + 0;- 3938TIME_TO_SEC 将参数 time 转换为秒数后返回:
mysql SELECT TIME_TO_SEC;- 80580mysql SELECT TIME_TO_SEC;- 2378
| 广告合作:400-664-0084 全国热线:400-664-0084 Copyright 2010 - 2017 www.my8848.com 珠峰网 粤ICP备15066211号 珠峰网 版权所有 All Rights Reserved
|