日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql常用日期时间函数_MySql常用日期时间函数

發布時間:2025/5/22 数据库 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql常用日期时间函数_MySql常用日期时间函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

返回當前的日期和時間

select MICROSECOND(SYSDATE()); --0

select SECOND(SYSDATE()); --33

select MINUTE(SYSDATE()); --8

select HOUR(SYSDATE()); --18

select week(SYSDATE()); --45

select MONTH(SYSDATE()); --11

select MONTHNAME(SYSDATE()); --November

select QUARTER(SYSDATE()); --4

select year(SYSDATE()); --2018

select SYSDATE(); --2018-12-23 18:08:33

select NOW(); --2018-12-23 18:08:33

select CURDATE(); --2018-12-23

select CURTIME(); --18:08:33

返回當前日期和時間的UNIX時間戳

select UNIX_TIMESTAMP(); --1542099027

select UNIX_TIMESTAMP(SYSDATE()); --1542099027

select FROM_UNIXTIME(unix_timestamp(sysdate())); --2018-12-23 16:50:27

select FROM_UNIXTIME(unix_timestamp(sysdate()), '%Y-%m-%d %H:%i:%S'); --2018-12-23 16:50:28

select FROM_UNIXTIME(unix_timestamp(sysdate())-20, '%Y-%m-%d %H:%i:%S'); --2018-12-23 16:50:08

參考格式如下:

%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), 這里星期一是星期的第一天

%% 一個文字“%”。

用這個函數可以幫助我們在時間戳中篩選出某些天的數據。

SELECT username, FROM_UNIXTIME(create_time, "%Y-%m-%d") AS dat

FROM `wp_user`

WHERE

create_time >= UNIX_TIMESTAMP('2017-11-29')

AND

create_time < UNIX_TIMESTAMP('2017-11-30')

GROUP BY dat;

這個查詢可以讓我們查出29號那一天的用戶注冊記錄。

查詢前20秒內的記錄數量

select marketing_activity_id, ip_address, COUNT(ip_address) num

from rod_redpacket_log t1

where t1.create_date between FROM_UNIXTIME(unix_timestamp(sysdate())-20, '%Y-%m-%d %H:%i:%S') and sysdate()

GROUP BY ip_address

str_to_date (字符串轉換為日期)函數:str_to_date(str, format)

select str_to_date('08/09/2008', '%m/%d/%Y'); -- 2008-08-09

select str_to_date('08/09/08' , '%m/%d/%y'); -- 2008-08-09

select str_to_date('08.09.2008', '%m.%d.%Y'); -- 2008-08-09

select str_to_date('08:09:30', '%h:%i:%s'); -- 08:09:30

select str_to_date('08.09.2008 08:09:30', '%m.%d.%Y %h:%i:%s'); -- 2008-08-09 08:09:30

日期轉換函數、時間轉換函數 date_format(date,format), time_format(time,format)

select date_format('2008-08-08 22:23:01', '%Y%m%d%H%i%s'); --20080808222301

select date_format(SYSDATE(), '%Y-%m-%d %H:%i:%s'); --2018-11-13 18:11:44

查詢當月出現的記錄數量

select phone_number, COUNT(phone_number) as num from table_name t1

WHERE DATE_FORMAT(t1.create_date, '%Y-%m') = DATE_FORMAT(CURDATE(), '%Y-%m')

group by PHONE_NUMBER;

查詢當天出現的記錄數量

select phone_number, COUNT(phone_number) as num from table_name t1

WHERE DATE_FORMAT(t1.create_date, '%Y-%m-%d') = DATE_FORMAT(CURDATE(), '%Y-%m-%d')

group by PHONE_NUMBER;

查詢當天某個時間段的數據

select * from rod_redpacket_log

where DATE_FORMAT(create_date, '%Y%m') = DATE_FORMAT(CURDATE( ), '%Y%m')

and DATE_FORMAT(create_date, '%H:%i')

between DATE_FORMAT( STR_TO_DATE(#{startTimeScop}, '%H:%i'), '%H:%i')

and DATE_FORMAT( STR_TO_DATE(#{endTimeScop}, '%H:%i'), '%H:%i') ;

MySQL 日期、時間轉換函數:date_format(date,format), time_format(time,format) 能夠把一個日期/時間轉換成各種各樣的字符串格式。它是 str_to_date(str,format) 函數的 一個逆轉換。

格式 ? ?描述

%a ? ?縮寫星期名

%b ? ?縮寫月名

%c ? ?月,數值

%D ? ?帶有英文前綴的月中的天

%d ? ?月的天,數值(00-31)

%e ? ?月的天,數值(0-31)

%f ? ?微秒

%H ? ?小時 (00-23)

%h ? ?小時 (01-12)

%I ? ?小時 (01-12)

%i ? ?分鐘,數值(00-59)

%j ? ?年的天 (001-366)

%k ? ?小時 (0-23)

%l ? ?小時 (1-12)

%M ? ?月名

%m ? ?月,數值(00-12)

%p ? ?AM 或 PM

%r ? ?時間,12-小時(hh:mm:ss AM 或 PM)

%S ? ?秒(00-59)

%s ? ?秒(00-59)

%T ? ?時間, 24-小時 (hh:mm:ss)

%U ? ?周 (00-53) 星期日是一周的第一天

%u ? ?周 (00-53) 星期一是一周的第一天

%V ? ?周 (01-53) 星期日是一周的第一天,與 %X 使用

%v ? ?周 (01-53) 星期一是一周的第一天,與 %x 使用

%W ? ?星期名

%w ? ?周的天 (0=星期日, 6=星期六)

%X ? ?年,其中的星期日是周的第一天,4 位,與 %V 使用

%x ? ?年,其中的星期一是周的第一天,4 位,與 %v 使用

%Y ? ?年,4 位

%y ? ?年,2 位

TO_DAYS函數 返回一個天數

SELECT TO_DAYS(‘1997-10-07′); --729669

如果要查詢當前表中昨天的數據那么

select * from lito where to_days(now()) - to_days(create_time) = 1;

如果要查詢今天出現的數據次數

select city_name,city_code,phone_number,COUNT(phone_number) num

from rod_redpacket_log t1

where to_days(t1.create_date) = to_days(NOW())

group by activity_id,phone_number;

MySQL 拼湊日期、時間函數:makdedate(year,dayofyear), maketime(hour,minute,second)

select makedate(2001,31); -- '2001-01-31'

select makedate(2001,32); -- '2001-02-01'

select maketime(12,15,30); -- '12:15:30'

MySQL (時間、秒)轉換函數:time_to_sec(time), sec_to_time(seconds)

select time_to_sec('01:00:05'); -- 3605

select sec_to_time(3605); -- '01:00:05'

向日期添加指定的時間間隔:DATE_ADD(date,INTERVAL expr type)

select date_add(now(), interval 1 day); -- add 1 day

select date_add(now(), interval 1 hour); -- add 1 hour

select date_add(now(), interval 1 minute); -- ...

select date_add(now(), interval 1 second);

select date_add(now(), interval 1 microsecond);

select date_add(now(), interval 1 week);

select date_add(now(), interval 1 month);

select date_add(now(), interval 1 quarter);

select date_add(now(), interval 1 year);

select date_add(now(), interval -1 day); -- sub 1 day

select date_add('2008-08-09 12:12:33', interval '01:15:30' hour_second); --2008-08-09 13:28:03

select date_add('2008-08-09 12:12:33', interval '1 01:15:30' day_second); --2008-08-10 13:28:03

type 參數可以是下列值:

MICROSECOND

SECOND

MINUTE

HOUR

DAY

WEEK

MONTH

QUARTER

YEAR

SECOND_MICROSECOND

MINUTE_MICROSECOND

MINUTE_SECOND

HOUR_MICROSECOND

HOUR_SECOND

HOUR_MINUTE

DAY_MICROSECOND

DAY_SECOND

DAY_MINUTE

DAY_HOUR

YEAR_MONTH

日期減去一個時間間隔:DATE_SUB(date,INTERVAL expr type)

select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second); --1997-12-30 22:58:59

select DATE_SUB(NOW(),INTERVAL 20 SECOND), now(); --2018-11-14 12:53:36,2018-11-14 12:53:56

查詢前三分鐘出現的記錄數量

select *,count(ACTIVITY_ID) from rod_redpacket_log

where CREATE_DATE BETWEEN DATE_SUB(now(),INTERVAL 3 MINUTE) and now()

GROUP BY ACTIVITY_ID;

查詢前30天的數據

select crt_time,* from marketing_activity where crt_time between DATE_SUB(now(), interval 30 day) and now() order by crt_time desc;

type 參數可以是下列值:

MICROSECOND

SECOND

MINUTE

HOUR

DAY

WEEK

MONTH

QUARTER

YEAR

SECOND_MICROSECOND

MINUTE_MICROSECOND

MINUTE_SECOND

HOUR_MICROSECOND

HOUR_SECOND

HOUR_MINUTE

DAY_MICROSECOND

DAY_SECOND

DAY_MINUTE

DAY_HOUR

YEAR_MONTH

日期、時間相減函數:datediff(date1,date2), timediff(time1,time2) ,date1-date2返回天數,兩個參數類型必須相同。

select datediff('2008-08-08', '2008-08-01'); -- 7

select datediff('2008-08-01', '2008-08-08'); -- -7

時間戳(timestamp)轉換、增、減函數

TIMESTAMPDIFF(unit,begin,end),date2-date1返回時間差,兩個參數類型必須相同。

select timestamp('2008-08-08'); -- 2008-08-08 00:00:00

select timestamp('2008-08-08 08:00:00', '01:01:01'); -- 2008-08-08 09:01:01

select timestamp('2008-08-08 08:00:00', '10 01:01:01'); -- 2008-08-18 09:01:01

select timestampadd(day, 1, '2008-08-08 08:00:00'); -- 2008-08-09 08:00:00

select date_add('2008-08-08 08:00:00', interval 1 day); -- 2008-08-09 08:00:00

# MySQL timestampadd() 函數類似于 date_add()。

select timestampdiff(year, '2002-05-01', '2001-01-01'); -- -1

select timestampdiff(day , '2002-05-01', '2001-01-01'); -- -485

select timestampdiff(hour, '2008-08-08 12:00:00', '2008-08-08 00:00:00'); -- -12

select datediff('2008-08-08 12:00:00', '2008-08-01 00:00:00'); -- 7

unit參數是確定(end-begin)的結果的單位,表示為整數。 以下是有效單位:

MICROSECOND

SECOND

MINUTE

HOUR

DAY

WEEK

MONTH

QUARTER

YEAR

MySQL 獲得當前時間戳函數:current_timestamp, current_timestamp()

select current_timestamp, current_timestamp(); --2018-11-13 17:23:56,2018-11-13 17:23:56

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的mysql常用日期时间函数_MySql常用日期时间函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。