MySQL get current date time and time conversion

1. Get the current date and time

1. Get the current date + time (date + time) function: now()

        In addition to the now() function to get the current date and time, there are the following functions in MySQL:

current_timestamp()   current_timestamp

localtime() localtime

localtimestamp()   localtimestamp

        These datetime functions are equivalent to now(). Given that the now() function is short and easy to remember, it is recommended to always use now() instead of the functions listed above.

 

2. Get the current date + time (date + time) function: sysdate()

        The sysdate() datetime function is similar to now(), except that now() gets the value at the beginning of execution, and sysdate() gets the value dynamically when the function executes.

  

3. Get the current date (date) function: curdate()

        Among them, the following two date functions are equivalent to curdate(): current_date(),current_date

  

4. Get the current time (time) function: curtime()

        Among them, the following two time functions are equivalent to curtime(): current_time(), current_time

  

5. Get the current UTC date and time functions: utc_date(), utc_time(), utc_timestamp()

        Because our country is located in the East Eight time zone, so the local time = UTC time + 8 hours. UTC time is very useful when the business involves multiple countries and regions.

#Get the current date + time function: now()
select now();

select current_timestamp();

select localtime();

select localtimestamp();

#Get the current date + time function: sysdate()
select sysdate();

#Get the current date (date) function: curdate()
select curdate();

#Get the current time (time) function: curtime()
select tanning();

#Get the current UTC datetime function
select utc_date();

select utc_time();

select utc_timestamp();

 

2. MySQL date and time Extract (select) function.

1. Select the parts of the datetime: date, time, year, quarter, month, day, hour, minute, second, microsecond

#Select the parts of the datetime
set @dt = '2008-09-10 07:15:30.123456';

select date(@dt); -- 2008-09-10
select time(@dt); -- 07:15:30.123456
select year(@dt); -- 2008
select quarter(@dt); -- 3
select month(@dt); -- 9
select week(@dt); -- 36
select day(@dt); -- 10
select hour(@dt); -- 7
select minute(@dt); -- 15
select second(@dt); -- 30
select microsecond(@dt); -- 123456

 

2. MySQL Extract() function, which can achieve similar functions above

#MySQL Extract() function, select each part of the date and time
set @dt = '2008-09-10 07:15:30.123456';

select extract(year from @dt); -- 2008
select extract(quarter from @dt); -- 3
select extract(month from @dt); -- 9
select extract(week from @dt); -- 36
select extract(day from @dt); -- 10
select extract(hour from @dt); -- 7
select extract(minute from @dt); -- 15
select extract(second from @dt); -- 30
select extract(microsecond from @dt); -- 123456
select extract(year_month from @dt); -- 200809
select extract(day_hour from @dt); -- 1007
select extract(day_minute from @dt); -- 100715
select extract(day_second from @dt); -- 10071530
select extract(day_microsecond from @dt); -- 10071530123456
select extract(hour_minute from @dt); -- 715
select extract(hour_second from @dt); -- 71530
select extract(hour_microsecond from @dt); -- 71530123456
select extract(minute_second from @dt); -- 1530
select extract(minute_microsecond from @dt); -- 1530123456
select extract(second_microsecond from @dt); -- 30123456
        The MySQL Extract() function has all the functions except date() and time(). And also has functions such as selecting 'day_microsecond'. Note that instead of selecting only day and microsecond, we select from the day part of the date to the microsecond part.

        The only bad thing about the MySQL Extract() function is that you need to hit the keyboard a few more times.

 

3. MySQL dayof function: dayofweek(), dayofmonth(), dayofyear(), which respectively return the date parameter, the position in the week, January, and year

#MySQL dayof function
set @dt = '2008-08-08';

select dayofweek(@dt); -- 6
select dayofmonth(@dt); -- 8
select dayofyear(@dt); -- 221

        The date '2008-08-08' is the 6th day of the week (1 = Sunday, 2 = Monday, …, 7 = Saturday); the 8th day of January; the 221st day of the year.

 

4. MySQL week函数:week(), weekofyear(), dayofweek(), weekday(), yearweek()

#MySQL week function
set @dt = '2008-08-08';

select week(@dt); -- 31
select week(@dt,3); -- 32
select weekofyear(@dt); -- 32
select dayofweek(@dt); -- 6
select weekday(@dt); -- 4
select yearweek(@dt); -- 200831

        The MySQL week() function can have two parameters, see the manual for details. weekofyear(), like week(), calculates the week of the year that "day" is. weekofyear(@dt) is equivalent to week(@dt,3).


        MySQL weekday() 函数和 dayofweek() 类似,都是返回“某天”在一周中的位置。不同点在于参考的标准, weekday:(0 = Monday, 1 = Tuesday, …, 6 = Sunday); dayofweek:(1 = Sunday, 2 = Monday, …, 7 = Saturday)。

        MySQL yearweek() 函数,返回 year(2008) + week 位置(31)。

 

5. MySQL 返回星期和月份名称函数:dayname(), monthname()

#MySQL 返回星期和月份名称函数
set @dt = '2008-08-08';

select dayname(@dt); -- Friday
select monthname(@dt); -- August

 

6. MySQL last_day() 函数:返回月份中的最后一天。

#MySQL last_day() 函数:返回月份中的最后一天
select last_day('2008-02-01'); -- 2008-02-29
select last_day('2008-08-08'); -- 2008-08-31

 

三.MySQL 日期时间计算函数

1. MySQL 为日期增加一个时间间隔:date_add()

#MySQL 为日期增加一个时间间隔:date_add()
set @dt = now();

select date_add(@dt, interval 1 day); -- add 1 day
select date_add(@dt, interval 1 hour); -- add 1 hour
select date_add(@dt, interval 1 minute); -- add 1 minute
select date_add(@dt, interval 1 second);
select date_add(@dt, interval 1 microsecond);
select date_add(@dt, interval 1 week); -- add 1 week
select date_add(@dt, interval 1 month); -- add 1 month
select date_add(@dt, interval 1 quarter); -- add一个季度
select date_add(@dt, interval 1 year); -- 增加一年
select date_add(@dt, interval -1 day); -- sub 1 day

        MySQL adddate(), addtime()函数,可以用 date_add() 来替代。下面是 date_add() 实现 addtime() 功能示例:

mysql> set @dt = '2008-08-09 12:12:33';
mysql> select date_add(@dt, interval '01:15:30' hour_second);
+------------------------------------------------+
| date_add(@dt, interval '01:15:30' hour_second) |
+------------------------------------------------+
| 2008-08-09 13:28:03 |
+------------------------------------------------+
mysql> select date_add(@dt, interval '1 01:15:30' day_second);
+-------------------------------------------------+
| date_add(@dt, interval '1 01:15:30' day_second) |
+-------------------------------------------------+
| 2008-08-10 13:28:03 |
+-------------------------------------------------+

        The date_add() function adds "1 hour, 15 minutes, 30 seconds" and "1 day, 1 hour, 15 minutes, 30 seconds" to @dt, respectively.

        Recommendation: Always use the date_add() datetime function instead of adddate(), addtime(). <br><br>

 

2. MySQL subtracts a time interval from a date: date_sub()

        The usage of MySQL date_sub() datetime function is the same as that of date_add(), so I won't go into details. In addition, there are two functions subdate() and subtime() in MySQL. It is recommended to use date_sub() instead.

 

3. MySQL alternative date functions: period_add(P,N), period_diff(P1,P2)

        The format of the parameter "P" of the period_add(P,N) function is "YYYYMM" or "YYMM", the second parameter "N" means adding or subtracting N month (month), MySQL period_add(P,N): date plus /minus N months.

#MySQL alternative date function: period_add(P,N)
select period_add('201606', 3);  -- 201609
        PERIOD_DIFF(P1,P2) returns the number of months between periods P1 and P2. P1 and P2 are in YYMM or YYYYMM format. Note that neither the period parameters P1 nor P2 are date values.
select period_diff('201606', '201505'); -- 13

 

4. MySQL date and time subtraction function: datediff(date1,date2), timediff(time1,time2)

        MySQL datediff(date1,date2):两个日期相减 date1 - date2,返回天数。

#MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)
select datediff('2008-08-08', '2008-08-01'); -- 7
select datediff('2008-08-01', '2008-08-08'); -- -7

        MySQL timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值。

#MySQL timediff(time1,time2):两个日期相减 time1 - time2,返回 time 差值
select timediff('2008-08-08 08:08:08', '2008-08-08 00:00:00'); -- 08:08:08
select timediff('08:08:08', '00:00:00'); -- 08:08:08

        注意:timediff(time1,time2) 函数的两个参数类型必须相同。

  

四.MySQL 日期转换函数、时间转换函数

1. MySQL (时间、秒)转换函数:time_to_sec(time), sec_to_time(seconds)

#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'

 

2. MySQL (日期、天数)转换函数:to_days(date), from_days(days)

#MySQL (日期、天数)转换函数:to_days(date), from_days(days)
select to_days('0000-00-00'); -- 0
select to_days('2008-08-08'); -- 733627
select from_days(0); -- '0000-00-00'
select from_days(733627); -- '2008-08-08'

 

3. MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format)

#MySQL 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

        可以看到,str_to_date(str,format) 转换函数,可以把一些杂乱无章的字符串转换为日期格式。另外,它也可以转换为时间。“format” 可以参看 MySQL 手册。

  

4. MySQL Date/Time to Str(日期/时间转换为字符串)函数:date_format(date,format), time_format(time,format)

        MySQL 日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。

#MySQL Date/Time to Str(日期/时间转换为字符串)函数:date_format(date,format), time_format(time,format)
set @dt = '2008-08-09 12:12:33';
select date_format(@dt, '%m/%d/%Y'); -- 08/09/2008
select date_format(@dt, '%m/%d/%y'); -- 08/09/08
select date_format(@dt, '%m.%d.%Y'); -- 08.09.2008
select date_format(@dt, '%h:%i:%s'); -- 12:12:33
select date_format(@dt, '%m.%d.%Y %h:%i:%s'); -- 08.09.2008 12:12:33 

  

5. MySQL 获得国家地区时间格式函数:get_format()

        MySQL get_format() 语法:get_format(date|time|datetime, 'eur'|'usa'|'jis'|'iso'|'internal'

        MySQL get_format() 用法的全部示例:

#MySQL 获得国家地区时间格式函数:get_format()
select get_format(date,'usa') ; -- '%m.%d.%Y'
select get_format(date,'jis') ; -- '%Y-%m-%d'
select get_format(date,'iso') ; -- '%Y-%m-%d'
select get_format(date,'eur') ; -- '%d.%m.%Y'
select get_format(date,'internal') ; -- '%Y%m%d'
select get_format(datetime,'usa') ; -- '%Y-%m-%d %H.%i.%s'
select get_format(datetime,'jis') ; -- '%Y-%m-%d %H:%i:%s'
select get_format(datetime,'iso') ; -- '%Y-%m-%d %H:%i:%s'
select get_format(datetime,'eur') ; -- '%Y-%m-%d %H.%i.%s'
select get_format(datetime,'internal') ; -- '%Y%m%d%H%i%s'
select get_format(time,'usa') ; -- '%h:%i:%s %p'
select get_format(time,'jis') ; -- '%H:%i:%s'
select get_format(time,'iso') ; -- '%H:%i:%s'
select get_format(time,'eur') ; -- '%H.%i.%s'
select get_format(time,'internal') ; -- '%H%i%s'

        MySQL get_format() 函数在实际中用到机会的比较少。

 

6. MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)

#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 时间戳(Timestamp)函数

1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()

#MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()
select current_timestamp;
select current_timestamp();

 

2. MySQL (Unix 时间戳、日期)转换函数:unix_timestamp(),unix_timestamp(date),from_unixtime(unix_timestamp),from_unixtime(unix_timestamp,format)

#返回一个Unix时间戳(从'1970-01-01 00:00:00'GMT开始的秒数,date默认值为当前时间)
select UNIX_TIMESTAMP(); -- 1466599565

select UNIX_TIMESTAMP('1997-10-04 22:23:00');  -- 875974980

#FROM_UNIXTIME(unix_timestamp):以'YYYY-MM-DD HH:MM:SS'或YYYYMMDDHHMMSS格式返回时间戳的值(根据返回值所处上下文是字符串或数字) 
select FROM_UNIXTIME(1466599565);  -- 2016-06-22 20:46:05

#FROM_UNIXTIME(unix_timestamp,format):以format字符串格式返回时间戳的值
select FROM_UNIXTIME(UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s %x');  -- 2016 22nd June 08:48:10 2016

  

3. MySQL 时间戳(timestamp)转换、增、减函数:

#MySQL 时间戳(timestamp)转换、增、减函数:
set @dt = '2008-08-09';
select timestamp(@dt); -- date to timestamp,运行结果:2008-08-09 00:00:00

set @ttime = '12:12:33';
select timestamp(@dt,@ttime); -- dt + time,运行结果:2008-08-09 12:12:33

select timestampadd(minute, 8820, '2012-08-24 09:00:00'); -- 2012-08-30 12:00:00

select timestampdiff(day, '2012-08-24', '2012-08-30'); -- 6
select timestampdiff(minute, '2012-08-24 09:00:00', '2012-08-30 12:00:00'); -- 8820

        MySQL timestampdiff() 函数就比datediff()功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。详见MySQL中TIMESTAMPDIFF和TIMESTAMPADD函数的用法

  

六.MySQL 时区(timezone)转换函数convert_tz(dt,from_tz,to_tz)

#MySQL 时区(timezone)转换函数convert_tz(dt,from_tz,to_tz)
select convert_tz('2008-08-08 12:00:00', '+08:00', '+00:00'); -- 2008-08-08 04:00:00

        时区转换也可以通过 date_add, date_sub, timestampadd 来实现。

#时区转换也可以通过 date_add, date_sub, timestampadd 来实现。
select date_add('2008-08-08 12:00:00', interval -8 hour); -- 2008-08-08 04:00:00
select date_sub('2008-08-08 12:00:00', interval 8 hour); -- 2008-08-08 04:00:00
select timestampadd(hour, -8, '2008-08-08 12:00:00'); -- 2008-08-08 04:00:00

 

文章来源:http://blog.sina.com.cn/s/blog_6d39dc6f0100m7eo.html

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326807816&siteId=291194637