• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

mysql常用日期时间/数值函数_MySQL

mysql 搞代码 4年前 (2022-01-09) 16次浏览 已收录 0个评论

gaodaima.com

mysql常用日期时间/数值函数

1.日期时间函数

时间转化秒函数:time_to_sec

mysql> select time_to_sec('01:01:01');

+————————-+

| time_to_sec('01:01:01') |

+————————-+

| 3661 |

+————————-+

1 row in set (0.00 sec)

秒转化时间函数:sec_to_time

mysql> select sec_to_time(3661);

+——————-+

| sec_to_time(3661) |

+——————-+

| 01:01:01 |

+——————-+

1 row in set (0.00 sec)

日期转为天数函数:to_days

mysql> select to_days('0000-00-00');

+———————–+

| to_days('0000-00-00') |

+———————–+

| NULL |

+———————–+

1 row in set, 1 warning (0.01 sec)

mysql> select to_days('0001-01-01');

+———————–+

| to_days('0001-01-01') |

+———————–+

| 366 |

+———————–+

1 row in set (0.00 sec)

天数转化日期函数:from_days

mysql> select from_days(0);

+————–+

| from_days(0) |

+————–+

| 0000-00-00 |

+————–+

1 row in set (0.00 sec)

mysql> select from_days(366);

+—————-+

| from_days(366) |

+—————-+

| 0001-01-01 |

+—————-+

1 row in set (0.00 sec)

字符串转换为日期函数:str_to_date

mysql> select str_to_date('2013-01-01 01:21:01','%Y-%m-%d %H:%i:%s');

+——————————————————–+

| str_to_date('2013-01-01 01:21:01','%Y-%m-%d %H:%i:%s') |

+——————————————————–+

| 2013-01-01 01:21:01 |

+——————————————————–+

1 row in set (0.00 sec)

日期转换为字符串函数:date_format

mysql> select date_format('2013-01-01 01:21:01','%Y%m%d %H%i%s');

+—————————————————-+

| date_format('2013-01-01 01:21:01','%Y%m%d %H%i%s') |

+—————————————————-+

| 20130101 012101 |

+—————————————————-+

1 row in set (0.00 sec)

时间转换为字符串函数:time_format

mysql> select time_format('01:21:01','%H%i%s');

+———————————-+

| time_format('01:21:01','%H%i%s') |

+———————————-+

| 012101 |

+———————————-+

1 row in set (0.00 sec)

说明:

日期时间格式参数如下:

%M 月名字(January……December)

%W 星期名字(Sunday……Saturday)

%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)

%Y 年, 数字, 4 位

%y 年, 数字, 2 位

%a 缩写的星期名字(Sun……Sat)

%d 月份中的天数, 数字(00……31)

%e 月份中的天数, 数字(0……31)

%m 月, 数字(01……12)

%c 月, 数字(1……12)

%b 缩写的月份名字(Jan……Dec)

%j 一年中的天数(001……366)

%H 小时(00……23)

%k 小时(0……23)

%h 小时(01……12)

%I 小时(01……12)

%l 小时(1……12)

%i 分钟, 数字(00……59)

%r 时间,12 小时(hh:mm:ss [AP]M)

%T 时间,24 小时(hh:mm:ss)

%S 秒(00……59)

%s 秒(00……59)

%p AM或PM

%w 一个星期中的天数(0=Sunday ……6=Saturday )

%U 星期(0……52), 这里星期天是星期的第一天

%u 星期(0……52), 这里星期一是星期的第一天

%% 一个文字“%”。

提取表达式的日期部分

mysql> select date(now());

+————-+

| date(now()) |

+————-+

| 2013-05-16 |

+————-+

1 row in set (0.00 sec)

返回表达式的星期索引(0=星期一,1=星期二, ……6= 星期天)。

mysql> select weekday(now());

+—————-+

| weekday(now()) |

+—————-+

| 3 |

+—————-+

1 row in set (0.00 sec)

返回表达式是一年的第几周

mysql> select week(now());

+————-+

| week(now()) |

+————-+

| 19 |

+————-+

1 row in set (0.00 sec)

WEEK()允许指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1, 从星期一开始,如下所示:

mysql> select week(now(),0);

+—————+

| week(now(),0) |

+—————+

| 19 |

+—————+

1 row in set (0.00 sec)

mysql> select week(now(),1);

+—————+

| week(now(),1) |

+—————+

| 20 |

+—————+

1 row in set (0.00 sec)

返回表达式一年中季度

mysql> select quarter(now());

+—————-+

| quarter(now()) |

+—————-+

| 2 |

+—————-+

1 row in set (0.00 sec)

返回表达式一周的第一天

mysql> select dayofweek(now());

+——————+

| dayofweek(now()) |

+——————+

| 5 |

+——————+

1 row in set (0.00 sec)

返回表达式一个月的第几天

mysql> select dayofmonth(now());

+——————-+

| dayofmonth(now()) |

+——————-+

| 16 |

+——————-+

1 row in set (0.00 sec)

返回表达式一年的第几天

mysql> select dayofyear(now());

+——————+

| dayofyear(now()) |

+——————+

| 136 |

+——————+

1 row in set (0.00 sec)

返回表达式的星期名字

mysql> select dayname(now());

+—————-+

| dayname(now()) |

+—————-+

| Thursday |

+—————-+

1 row in set (0.00 sec)

返回表达式月份的名字

mysql> select monthname(now());

+——————+

| monthname(now()) |

+——————+

| May |

+——————+

1 row in set (0.00 sec)

mysql>

提取表达式的年份

mysql> select year(now());

+————-+

| year(now()) |

+————-+

| 2013 |

+————-+

1 row in set (0.00 sec)

提取表达式的月份

mysql> select month(now());

+————–+

| month(now()) |

+————–+

| 5 |

+————–+

1 row in set (0.01 sec)

提取表达式的天数

mysql> select day(now());

+————+

| day(now()) |

+————+

| 16 |

+————+

1 row in set (0.00 sec)

提取表达式的小时

mysql> select hour(now());

+————-+

| hour(now()) |

+————-+

| 16 |

+————-+

1 row in set (0.00 sec)

提取表达式的分钟

mysql> select minute(now());

+—————+

| minute(now()) |

+—————+

| 31 |

+—————+

1 row in set (0.00 sec)

提取表达式的秒数

mysql> select second(now());

+—————+

| second(now()) |

+—————+

| 34 |

+—————+

1 row in set (0.00 sec)

将当前日期按照'YYYY-MM-DD' 或YYYYMMDD 格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。

mysql> select curdate();

+————+

| curdate() |

+————+

| 2013-05-16 |

+————+

1 row in set (0.00 sec)

mysql> select curdate()+1;

+————-+

| curdate()+1 |

+————-+

| 20130517 |

+————-+

1 row in set (0.00 sec)

将当前时间以'HH:MM:SS'或 HHMMSS的格式返回,具体格式根据函数用在字符串或是数字语境中而定。

mysql> select curtime();

+———–+

| curtime() |

+———–+

| 16:43:10 |

+———–+

1 row in set (0.00 sec)

mysql> select curtime()+1;

+—————+

| curtime()+1 |

+—————+

| 164420.000000 |

+—————+

1 row in set (0.00 sec)

获取当前日期时间:sysdate(),now()

mysql> select sysdate(),sleep(2),sysdate();

+———————+———-+———————+

| sysdate() | sleep(2) | sysdate() |

+———————+———-+———————+

| 2013-05-16 17:16:04 | 0 | 2013-05-16 17:16:06 |

+———————+———-+———————+

1 row in set (2.00 sec)

mysql> select now(),sleep(2),now();

+———————+———-+———————+

| now() | sleep(2) | now() |

+———————+———-+———————+

| 2013-05-16 17:16:18 | 0 | 2013-05-16 17:16:18 |

+———————+———-+———————+

1 row in set (2.00 sec)

从上面可以看到sysdate和now的区别,now表示语句开始的时间,而sysdate实时的获取时间

将当前日期按照'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。

mysql> select current_timestamp;

+———————+

| current_timestamp |

+———————+

| 2013-05-16 17:19:51 |

+———————+

1 row in set (0.00 sec)

mysql> select current_timestamp+1;

+———————–+

| current_timestamp+1 |

+———————–+

| 20130516172008.000000 |

+———————–+

1 row in set (0.00 sec)

unix_timestamp(),unix_timestamp(date)

如果没有参数调用,返回一个Unix时间戳记(从'1970-01-01 00:00:00'GMT开始的秒数)。如果UNIX_TIMESTAMP()用一

个date参数被调用,它返回从'1970-01-01 00:00:00' GMT开始的秒数值。date可以是一个DATE字符串、一个DATETIME

字符串、一个TIMESTAMP或以YYMMDD或YYYYMMDD格式的本地时间的一个数字。

mysql> select unix_timestamp();

+——————+

| unix_timestamp() |

+——————+

| 1368696216 |

+——————+

1 row in set (0.00 sec)

mysql> select unix_timestamp('2013-05-16 01:01:01');

+—————————————+

| unix_timestamp('2013-05-16 01:01:01') |

+—————————————+

| 1368637261 |

+—————————————+

1 row in set (0.00 sec)

mysql>

FROM_UNIXTIME(unix_timestamp)

以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回unix_timestamp参数所表示的值,具体格式根据函数用在字符串或是数字语境中而定

mysql> select from_unixtime(1368637261);

+—————————+

| from_unixtime(1368637261) |

+—————————+

| 2013-05-16 01:01:01 |

+—————————+

1 row in set (0.00 sec)

mysql> select from_unixtime(1368637261)+1;

+—————————–+

| from_unixtime(1368637261)+1 |

+—————————–+

| 20130516010102.000000 |

+—————————–+

1 row in set (0.00 sec)

mysql> select from_unixtime(1368637261,'%Y-%m-%d %h:%i:%s');

+———————————————–+

| from_unixtime(1368637261,'%Y-%m-%d %h:%i:%s') |

+———————————————–+

| 2013-05-16 01:01:01 |

+———————————————–+

1 row in set (0.00 sec)

返回表达式所在月的最后一天

mysql> select last_day(now());

+—————–+

| last_day(now()) |

+—————–+

| 2013-05-31 |

+—————–+

1 row in set (0.00 sec)

日期加减运算

DATE_ADD(date,INTERVAL expr type) –加法

DATE_SUB(date,INTERVAL expr type) –减法

mysql> select date_add('2013-05-16 01:01:01',interval 1 second);

+—————————————————+

| date_add('2013-05-16 01:01:01',interval 1 second) |

+—————————————————+

| 2013-05-16 01:01:02 |

+—————————————————+

1 row in set (0.00 sec)

mysql> select date_add('2013-05-16 01:01:01',interval 1 day);

+————————————————+

| date_add('2013-05-16 01:01:01',interval 1 day) |

+————————————————+

| 2013-05-17 01:01:01 |

+————————————————+

1 row in set (0.00 sec)

mysql> select date_add('2013-05-16 01:01:01',interval 1 minute);

+—————————————————+

| date_add('2013-05-16 01:01:01',interval 1 minute) |

+—————————————————+

| 2013-05-16 01:02:01 |

+—————————————————+

1 row in set (0.00 sec)

mysql> select date_add('2013-05-16 01:01:01',interval 1 hour);

+————————————————-+

| date_add('2013-05-16 01:01:01',interval 1 hour) |

+————————————————-+

| 2013-05-16 02:01:01 |

+————————————————-+

1 row in set (0.00 sec)

mysql> select date_add('2013-05-16 01:01:01',interval '1:1' minute_second);

+————————————————————–+

| date_add('2013-05-16 01:01:01',interval '1:1' minute_second) |

+————————————————————–+

| 2013-05-16 01:02:02 |

+————————————————————–+

1 row in set (0.00 sec)

mysql> select date_add('2013-05-16 01:01:01', interval '1 1:1:1' day_second);

+—————————————————————-+

| date_add('2013-05-16 01:01:01', interval '1 1:1:1' day_second) |

+—————————————————————-+

| 2013-05-17 02:02:02 |

+—————————————————————-+

1 row in set (0.00 sec)

type值格式:

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”

DATEDIFF(expr, expr2)

返回起始时间 expr和结束时间expr2之间的天数。Expr和expr2为日期或 date-and-time 表达式。计算中只用到这些值的日期部分。

mysql> select datediff('2013-05-16 06:01:01', '2013-05-17 01:01:01');

+——————————————————–+

| datediff('2013-05-16 06:01:01', '2013-05-17 01:01:01') |

+——————————————————–+

| -1 |

+——————————————————–+

1 row in set (0.00 sec)

表示日期时间的数据类型:

date

time

year

datetime

timestamp

在使用日期时间数据比较时常用如下

mysql> select * from tab ;

+——+———————+

| name | createtime |

+——+———————+

| aaaa | 2013-05-14 17:20:19 |

| bbbb | 2013-04-14 17:20:36 |

| bbbb | 2013-04-13 17:20:36 |

| bbbb | 2013-04-15 17:20:36 |

+——+———————+

4 rows in set (0.00 sec)

mysql> select now();

+———————+

| now() |

+———————+

| 2013-05-14 17:10:26 |

+———————+

1 row in set (0.00 sec)

mysql> select * from tab where createtime > now();

+——+———————+

| name | createtime |

+——+———————+

| aaaa | 2013-05-14 17:20:19 |

+——+———————+

1 row in set (0.00 sec)

mysql> select current_timestamp;

+———————+

| current_timestamp |

+———————+

| 2013-05-14 17:10:49 |

+———————+

1 row in set (0.00 sec)

mysql> select * from tab where createtime > current_timestamp;

+——+———————+

| name | createtime |

+——+———————+

| aaaa | 2013-05-14 17:20:19 |

+——+———————+

1 row in set (0.00 sec)

mysql> select * from tab where createtime> str_to_date('2013-05-14 00:00:00','%Y-%m-%d %H:%i:%s');;

+——+———————+

| name | createtime |

+——+———————+

| aaaa | 2013-05-14 17:20:19 |

+——+———————+

1 row in set (0.00 sec)

mysql> select * from tab where createtime between str_to_date('2013-05-14 00:00:00','%Y-%m-%d %H:%i:%s') and str_to_date('2013-05-15 00:00:00','%Y-%m-%d %H:%i:%s')

-> ;

+——+———————+

| name | createtime |

+——+———————+

| aaaa | 2013-05-14 17:20:19 |

+——+———————+

1 row in set (0.00 sec)

mysql> select * from tab where createtime between '2013-05-14 00:00:00' and '2013-05-15 00:00:00';

+——+———————+

| name | createtime |

+——+———————+

| aaaa | 2013-05-14 17:20:19 |

+——+———————+

1 row in set (0.00 sec)

mysql>

2.数值函数

ABS(X) :返回表达式X的绝对值

mysql> select abs(-2);

+———+

| abs(-2) |

+———+

| 2 |

+———+

1 row in set (0.00 sec)

FLOOR(X) :返回不大于X的最大整数值

mysql> select floor(-2.45);

+————–+

| floor(-2.45) |

+————–+

| -3 |

+————–+

1 row in set (0.00 sec)

MOD(N,M):模操作,返回N被M除后的余数。

mysql> select mod(3,2);

+———-+

| mod(3,2) |

+———-+

| 1 |

+———-+

1 row in set (0.00 sec)

RAND()/RAND(N) :返回一个随机浮点值数a,范围在 0 到1 之间 (即, 其范围为 0 ≤ a ≤ 1.0)。若已指定一个整数参数 N,则它被用作种子值,用来产生重复序列。

mysql> select rand();

+——————-+

| rand() |

+——————-+

| 0.294932589209576 |

+——————-+

1 row in set (0.00 sec)

mysql> select rand(2);

+——————-+

| rand(2) |

+——————-+

| 0.655586646549019 |

+——————-+

1 row in set (0.00 sec)

ROUND(X)/ROUND(X,D) :返回参数X, 其值接近于最近似的整数。在有两个参数的情况下,返回 X ,其值保留到小数点后D位,而第D位的保留方式为四舍五入。若要接保留X值小数点左边的D位,可将D设为负值。

mysql> select round(2.4 );

+————-+

| round(2.4 ) |

+————-+

| 2 |

+————-+

1 row in set (0.00 sec)

mysql> select round(2.432,2 );

+—————–+

| round(2.432,2 ) |

+—————–+

| 2.43 |

+—————–+

1 row in set (0.00 sec)

mysql> select round(12.4本文来源gao@!dai!ma.com搞$$代^@码5网@32,-1 );

+——————-+

| round(12.432,-1 ) |

+——————-+

| 10 |

+——————-+

1 row in set (0.00 sec)

gaodaima.com


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:mysql常用日期时间/数值函数_MySQL

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址