MySQL은 가장 널리 사용되는 관계형 데이터베이스 관리 시스템입니다. 웹 애플리케이션 측면에서 MySQL은 최고의 RDBMS 애플리케이션 소프트웨어 중 하나입니다. 이 소개에서는 현재 시간과 타임스탬프를 얻는 MySQL 방법을 빠르게 익히고 MySQL 데이터베이스를 쉽게 사용할 수 있습니다.
현재 날짜 + 시간 가져오기(날짜 + 시간) 함수: now()
MySQL> select now(); +———————+ | now() | +———————+ | 2013-04-08 20:56:19 | +———————+
현재 날짜와 시간을 가져올 수 있는 now() 함수 외에도 MySQL에는 다음과 같은 기능이 있습니다.
current_timestamp() ,current_timestamp,localtime() ,localtime ,localtimestamp — (v4.0.6) ,localtimestamp() — (v4.0.6)
이러한 날짜 및 시간 함수는 now()와 동일합니다. now() 함수는 짧고 기억하기 쉽기 때문에 위에 나열된 함수 대신 항상 now()를 사용하는 것이 좋습니다.
현재 날짜 + 시간 가져오기(날짜 + 시간) 함수: sysdate()
sysdate() 날짜 및 시간 함수는 now()와 유사하지만 차이점은 다음과 같습니다. now() 값은 다음에서 가져옵니다. 실행 시작 시 sysdate()는 함수가 실행될 때 동적으로 값을 가져옵니다. 다음 예를 보면 이해할 수 있습니다.
mysql> select now(), sleep(3), now(); +———————+———-+———————+ | now() | sleep(3) | now() | +———————+———-+———————+ | 2013-04-08 20:57:46 | 0 | 2013-04-08 20:57:46 | +———————+———-+———————+ mysql> select sysdate(), sleep(3), sysdate(); +———————+———-+———————+ | sysdate() | sleep(3) | sysdate() | +———————+———-+———————+ | 2013-04-08 20:58:47 | 0 | 2013-04-08 20:58:50 | +———————+———-+———————+
중간에 3초 동안 sleep하지만 now() 함수로 두 번 얻은 시간 값은 동일하다는 것을 알 수 있습니다. sysdate() 함수는 3초씩 다릅니다. MySQL 매뉴얼에서는 sysdate()를 다음과 같이 설명합니다. 함수가 실행되는 시간을 반환합니다.
sysdate() 날짜 및 시간 함수, 일반적으로 거의 사용되지 않습니다.
현재 날짜(date) 가져오기 함수: curdate()
mysql> select curdate(); +————+ | curdate() | +————+ | 2013-04-08 | +————+
그 중 다음 두 날짜 함수는 curdate()와 동일합니다.
current_date() ,current_date
현재 시간(time) 가져오기 함수: curtime()
mysql> select curtime(); +———–+ | curtime() | +———–+ | 21:00:11 | +———–+
그 중 다음 두 시간 함수는 curtime()과 동일합니다.
current_time() ,current_time
현재 UTC 날짜 및 시간 함수 가져오기: utc_date(), utc_time(), utc_timestamp()
mysql> select utc_timestamp(), utc_date(), utc_time(),now(); +———————+————+————+———————+ | utc_timestamp() | utc_date() | utc_time() | now() | +———————+————+————+———————+ | 2013-04-08 13:01:32 | 2013-04-08 | 13:01:32 |2013-04-08 21:01:32 | +———————+————+————+———————+
우리 나라이기 때문에 는 동부 8번째 시간대에 위치하므로 현지 시간 = UTC 시간 + 8시간입니다. UTC 시간은 비즈니스에 여러 국가 및 지역이 관련되어 있는 경우 매우 유용합니다.
1. 날짜, 시간, 연도, 분기, 월, 일, 시, 분, 초, 마이크로초 중에서 각 부분을 선택하세요.
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() 함수를 유사하게 구현할 수 있습니다. 위 함수:
et @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); — 123456select 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
MySQL Extract() 함수에는 date()와 time()을 제외한 모든 함수가 있습니다. 'day_microsecond'를 선택하는 등의 기능도 있습니다. 일과 마이크로초만 선택하는 대신 날짜의 일 부분부터 마이크로초 부분까지 선택합니다. 충분히 힘들다!
MySQL Extract() 함수의 유일한 나쁜 점은 키보드를 몇 번 더 눌러야 한다는 것입니다.
3. MySQL dayof... 함수: dayofweek(), dayofmonth(), dayofyear()
날짜 매개변수, 주, 월, 연도 위치를 각각 반환합니다.
set @dt = ’2008-08-08′; select dayofweek(@dt); — 6 select dayofmonth(@dt); — 8 select dayofyear(@dt); — 221
날짜 '2008-08-08'은 한 주의 6번째 날입니다(1 = 일요일, 2 = 월요일, …, 7 = 토요일).
4. MySQL week... 함수: week(), weekofyear(), dayofweek(), weekday(), yearweek()
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
MySQL week() 함수는 두 개의 매개변수를 가질 수 있으므로 참조하세요. 자세한 내용은 설명서를 참조하세요. Weekofyear()는 week()와 동일하며 둘 다 "특정 날짜"가 있는 연도의 주를 계산합니다. weekofyear(@dt)는 week(@dt,3)와 동일합니다.
MySQL weekday() 함수는 dayofweek()와 유사하며 둘 다 해당 주의 "언젠가" 위치를 반환합니다. 차이점은 참조 표준에 있습니다. weekday: (0 = 월요일, 1 = 화요일, …, 6 = 일요일); dayofweek: (1 = 일요일, 2 = 월요일, …, 7 = 토요일)
MySQL yearweek() 함수 , 복귀 연도(2008) + 주 위치(31).
5. MySQL은 주 및 월 이름 함수를 반환합니다: dayname(), Monthname()
set @dt = ’2008-08-08′; select dayname(@dt); — Friday select monthname(@dt); — August
중국 이름을 어떻게 반환할 수 있을까요?
6. MySQL last_day() 함수: 해당 월의 마지막 날을 반환합니다.
select last_day(’2008-02-01′); — 2008-02-29 select last_day(’2008-08-08′); — 2008-08-31
MySQL last_day() 함수는 매우 유용합니다. 예를 들어 이번 달의 일 수를 얻으려면 다음과 같이 계산할 수 있습니다.
mysql> select now(), day(last_day(now())) as days; +———————+——+ | now() | days | +———————+——+ | 2013-04-08 21:03:14 | 30 | +———————+——+
1. 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); — … select date_add(@dt, interval 1 second); select date_add(@dt, interval 1 microsecond); select date_add(@dt, interval 1 week); select date_add(@dt, interval 1 month); select date_add(@dt, interval 1 quarter); select date_add(@dt, interval 1 year); select date_add(@dt, interval -1 day); — sub 1 day
MySQL adddate(), addtime() 함수는 date_add()로 대체될 수 있습니다. 다음은 addtime() 함수를 구현하는 date_add()의 예입니다.
mysql> set @dt = ’2008-08-09 12:12:33′; mysql> 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 | +——————————————+
date_add() 函数,分别为 @dt 增加了“1小时 15分 30秒” 和 “1天 1小时 15分 30秒”。建议:总是使用 date_add() 日期时间函数来替代 adddate(), addtime()。
2. MySQL 为日期减去一个时间间隔:date_sub()
mysql> select date_sub(’1998-01-01 00:00:00′, interval ’1 1:1:1′ day_second); +——————————————+ | date_sub(’1998-01-01 00:00:00′, interval ’1 1:1:1′ day_second) | +——————————————+ | 1997-12-30 22:58:59 | +——————————————+
MySQL date_sub() 日期时间函数 和 date_add() 用法一致,不再赘述。另外,MySQL 中还有两个函数 subdate(), subtime(),建议,用 date_sub() 来替代。
3. MySQL 另类日期函数:period_add(P,N), period_diff(P1,P2)
函数参数“P” 的格式为“YYYYMM” 或者 “YYMM”,第二个参数“N” 表示增加或减去 N month(月)。
MySQL period_add(P,N):日期加/减去N月。
mysql> select period_add(200808,2), period_add(20080808,-2) +——————————————+ | period_add(200808,2) | period_add(20080808,-2) | +——————————————+ | 200810 | 20080806 | +——————————————+ MySQL period_diff(P1,P2):日期 P1-P2,返回 N 个月。 mysql> select period_diff(200808, 200801); +——————————————+ | period_diff(200808, 200801) | +——————————————+ | 7 | +——————————————+
在 MySQL 中,这两个日期函数,一般情况下很少用到。
4. MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)
MySQL datediff(date1,date2):两个日期相减 date1 – date2,返回天数。 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 差值。 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) 函数的两个参数类型必须相同。
1. 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)
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)
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> select date_format(’2008-08-08 22:23:00′, ‘%W %M %Y’); +——————————————+ | date_format(’2008-08-08 22:23:00′, ‘%W %M %Y’) | +——————————————+ | Friday August 2008 | +——————————————+ mysql> select date_format(’2008-08-08 22:23:01′, ‘%Y%m%d%H%i%s’); +——————————————+ | date_format(’2008-08-08 22:23:01′, ‘%Y%m%d%H%i%s’) | +——————————————+ | 20080808222301 | +——————————————+ mysql> select time_format(’22:23:01′, ‘%H.%i.%s’); +——————————————+ | time_format(’22:23:01′, ‘%H.%i.%s’) | +——————————————+ | 22.23.01 | +——————————————+
MySQL 日期、时间转换函数:date_format(date,format), time_format(time,format) 能够把一个日期/时间转换成各种各样的字符串格式。它是 str_to_date(str,format) 函数的 一个逆转换。
5. MySQL 获得国家地区时间格式函数:get_format()
MySQL get_format() 语法:
get_format(date|time|datetime, ‘eur’|’usa’|’jis’|’iso’|’internal’
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)
select makedate(2001,31); — ’2001-01-31′ select makedate(2001,32); — ’2001-02-01′ select maketime(12,15,30); — ’12:15:30′
1. MySQL 获得当前时间戳函数:current_timestamp, current_timestamp()
mysql> select current_timestamp, current_timestamp(); +——————————————+ | current_timestamp | current_timestamp() | +——————————————+ | 2008-08-09 23:22:24 | 2008-08-09 23:22:24 | +——————————————+
2. MySQL (Unix 时间戳、日期)转换函数:
unix_timestamp(), unix_timestamp(date), from_unixtime(unix_timestamp), from_unixtime(unix_timestamp,format)
下面是示例:
select unix_timestamp(); — 1218290027 select unix_timestamp(’2008-08-08′); — 1218124800 select unix_timestamp(’2008-08-08 12:30:00′); — 1218169800 select from_unixtime(1218290027); — ’2008-08-09 21:53:47′ select from_unixtime(1218124800); — ’2008-08-08 00:00:00′ select from_unixtime(1218169800); — ’2008-08-08 12:30:00′ select from_unixtime(1218169800, ‘%Y %D %M %h:%i:%s %x’); — ’2008 8th August 12:30:00 2008′
3. MySQL 时间戳(timestamp)转换、增、减函数:
timestamp(date) — date to timestamp timestamp(dt,time) — dt + time timestampadd(unit,interval,datetime_expr) – timestampdiff(unit,datetime_expr1,datetime_expr2) –
请看示例部分:
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 MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。
MySQL timestampdiff() 函数就比 datediff() 功能强多了,datediff() 只能计算两个日期(date)之间相差的天数。
select convert_tz(’2008-08-08 12:00:00′, ‘+08:00′, ‘+00:00′); — 2008-08-08 04:00:00 时区转换也可以通过 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
相关学习推荐:mysql教程(视频)
위 내용은 MySQL에서 현재 시간과 타임스탬프를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!