MySQL 날짜 및 시간 처리 기능
이 기사는 MySQL 날짜 및 시간 처리 기능을 공유합니다. 매우 상세하고 실용적이므로 필요한 친구가 참조할 수 있습니다.
다음은 기본적으로 모든 MySQL 날짜 및 시간 함수를 포함합니다
-- MySQL日期时间处理函数 -- 当前日期:2017-05-12(突然发现今天512,是不是会拉防空警报) SELECT NOW() FROM DUAL;-- 当前日期时间:2017-05-12 11:41:47 -- 在MySQL里也存在和Oracle里类似的dual虚拟表:官方声明纯粹是为了满足select ... from...这一习惯问题,mysql会忽略对该表的引用。 -- 那么MySQL中就不用DUAL了吧。 SELECT NOW();-- 当前日期时间:2017-05-12 11:41:55 -- 除了 now() 函数能获得当前的日期时间外,MySQL 中还有下面的函数: SELECT CURRENT_TIMESTAMP();-- 2017-05-15 10:19:31 SELECT CURRENT_TIMESTAMP;-- 2017-05-15 10:19:51 SELECT LOCALTIME();-- 2017-05-15 10:20:00 SELECT LOCALTIME;-- 2017-05-15 10:20:10 SELECT LOCALTIMESTAMP();-- 2017-05-15 10:20:21(v4.0.6) SELECT LOCALTIMESTAMP;-- 2017-05-15 10:20:30(v4.0.6) -- 这些日期时间函数,都等同于 now()。鉴于 now() 函数简短易记,建议总是使用 now()来替代上面列出的函数。 SELECT SYSDATE();-- 当前日期时间:2017-05-12 11:42:03 -- sysdate() 日期时间函数跟 now() 类似, -- 不同之处在于:now() 在执行开始时值就得到了;sysdate() 在函数执行时动态得到值。 -- 看下面的例子就明白了: SELECT NOW(), SLEEP(3), NOW(); SELECT SYSDATE(), SLEEP(3), SYSDATE(); SELECT CURDATE();-- 当前日期:2017-05-12 SELECT CURRENT_DATE();-- 当前日期:等同于 CURDATE() SELECT CURRENT_DATE;-- 当前日期:等同于 CURDATE() SELECT CURTIME();-- 当前时间:11:42:47 SELECT CURRENT_TIME();-- 当前时间:等同于 CURTIME() SELECT CURRENT_TIME;-- 当前时间:等同于 CURTIME() -- 获得当前 UTC 日期时间函数 SELECT UTC_TIMESTAMP(), UTC_DATE(), UTC_TIME() -- MySQL 获得当前时间戳函数:current_timestamp, current_timestamp() SELECT CURRENT_TIMESTAMP, CURRENT_TIMESTAMP();-- 2017-05-15 10:32:21 | 2017-05-15 10:32:21 -- MySQL 日期时间 Extract(选取) 函数 SET @dt = '2017-05-15 10:37:14.123456'; SELECT DATE(@dt);-- 获取日期:2017-05-15 SELECT TIME('2017-05-15 10:37:14.123456');-- 获取时间:10:37:14.123456 SELECT YEAR('2017-05-15 10:37:14.123456');-- 获取年份 SELECT MONTH('2017-05-15 10:37:14.123456');-- 获取月份 SELECT DAY('2017-05-15 10:37:14.123456');-- 获取日 SELECT HOUR('2017-05-15 10:37:14.123456');-- 获取时 SELECT MINUTE('2017-05-15 10:37:14.123456');-- 获取分 SELECT SECOND('2017-05-15 10:37:14.123456');-- 获取秒 SELECT MICROSECOND('2017-05-15 10:37:14.123456');-- 获取毫秒 SELECT QUARTER('2017-05-15 10:37:14.123456');-- 获取季度 SELECT WEEK('2017-05-15 10:37:14.123456');-- 20 (获取周) SELECT WEEK('2017-05-15 10:37:14.123456', 7);-- ****** 测试此函数在MySQL5.6下无效 SELECT WEEKOFYEAR('2017-05-15 10:37:14.123456');-- 同week() SELECT DAYOFYEAR('2017-05-15 10:37:14.123456');-- 135 (日期在年度中第几天) SELECT DAYOFMONTH('2017-05-15 10:37:14.123456');-- 5 (日期在月度中第几天) SELECT DAYOFWEEK('2017-05-15 10:37:14.123456');-- 2 (日期在周中第几天;周日为第一天) SELECT WEEKDAY('2017-05-15 10:37:14.123456');-- 0 SELECT WEEKDAY('2017-05-21 10:37:14.123456');-- 6(与dayofweek()都表示日期在周的第几天,只是参考标准不同,weekday()周一为第0天,周日为第6天) SELECT YEARWEEK('2017-05-15 10:37:14.123456');-- 201720(年和周) SELECT EXTRACT(YEAR FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(MONTH FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(DAY FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(HOUR FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(MINUTE FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(SECOND FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(MICROSECOND FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(QUARTER FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(WEEK FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(YEAR_MONTH FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(DAY_HOUR FROM '2017-05-15 10:37:14.123456'); SELECT EXTRACT(DAY_MINUTE FROM '2017-05-15 10:37:14.123456');-- 151037(日时分) SELECT EXTRACT(DAY_SECOND FROM '2017-05-15 10:37:14.123456');-- 15103714(日时分秒) SELECT EXTRACT(DAY_MICROSECOND FROM '2017-05-15 10:37:14.123456');-- 15103714123456(日时分秒毫秒) SELECT EXTRACT(HOUR_MINUTE FROM '2017-05-15 10:37:14.123456');-- 1037(时分) SELECT EXTRACT(HOUR_SECOND FROM '2017-05-15 10:37:14.123456');-- 103714(时分秒) SELECT EXTRACT(HOUR_MICROSECOND FROM '2017-05-15 10:37:14.123456');-- 103714123456(日时分秒毫秒) SELECT EXTRACT(MINUTE_SECOND FROM '2017-05-15 10:37:14.123456');-- 3714(分秒) SELECT EXTRACT(MINUTE_MICROSECOND FROM '2017-05-15 10:37:14.123456');-- 3714123456(分秒毫秒) SELECT EXTRACT(SECOND_MICROSECOND FROM '2017-05-15 10:37:14.123456');-- 14123456(秒毫秒) -- MySQL Extract() 函数除了没有date(),time() 的功能外,其他功能一应具全。 -- 并且还具有选取‘day_microsecond' 等功能。 -- 注意这里不是只选取 day 和 microsecond,而是从日期的 day 部分一直选取到 microsecond 部分。 SELECT DAYNAME('2017-05-15 10:37:14.123456');-- Monday(返回英文星期) SELECT MONTHNAME('2017-05-15 10:37:14.123456');-- May(返回英文月份) SELECT LAST_DAY('2016-02-01');-- 2016-02-29 (返回月份中最后一天) SELECT LAST_DAY('2016-05-01');-- 2016-05-31 -- DATE_ADD(date,INTERVAL expr type) 从日期加上指定的时间间隔 -- type参数可参考:http://www.w3school.com.cn/sql/func_date_sub.asp SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 YEAR);-- 表示:2018-05-15 10:37:14.123456 SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 QUARTER);-- 表示:2017-08-15 10:37:14.123456 SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 MONTH);-- 表示:2017-06-15 10:37:14.123456 SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 WEEK);-- 表示:2017-05-22 10:37:14.123456 SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 DAY);-- 表示:2017-05-16 10:37:14.123456 SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 HOUR);-- 表示:2017-05-15 11:37:14.123456 SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 MINUTE);-- 表示:2017-05-15 10:38:14.123456 SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 SECOND);-- 表示:2017-05-15 10:37:15.123456 SELECT DATE_ADD('2017-05-15 10:37:14.123456',INTERVAL 1 MICROSECOND);-- 表示:2017-05-15 10:37:14.123457 -- DATE_SUB(date,INTERVAL expr type) 从日期减去指定的时间间隔 SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 YEAR);-- 表示:2016-05-15 10:37:14.123456 SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 QUARTER);-- 表示:2017-02-15 10:37:14.123456 SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 MONTH);-- 表示:2017-04-15 10:37:14.123456 SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 WEEK);-- 表示:2017-05-08 10:37:14.123456 SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 DAY);-- 表示:2017-05-14 10:37:14.123456 SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 HOUR);-- 表示:2017-05-15 09:37:14.123456 SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 MINUTE);-- 表示:2017-05-15 10:36:14.123456 SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 SECOND);-- 表示:2017-05-15 10:37:13.123456 SELECT DATE_SUB('2017-05-15 10:37:14.123456',INTERVAL 1 MICROSECOND);-- 表示:2017-05-15 10:37:14.123455 -- 经特殊日期测试,DATE_SUB(date,INTERVAL expr type)可放心使用 SELECT DATE_SUB(CURDATE(),INTERVAL 1 DAY);-- 前一天:2017-05-11 SELECT DATE_SUB(CURDATE(),INTERVAL -1 DAY);-- 后一天:2017-05-13 SELECT DATE_SUB(CURDATE(),INTERVAL 1 MONTH);-- 一个月前日期:2017-04-12 SELECT DATE_SUB(CURDATE(),INTERVAL -1 MONTH);-- 一个月后日期:2017-06-12 SELECT DATE_SUB(CURDATE(),INTERVAL 1 YEAR);-- 一年前日期:2016-05-12 SELECT DATE_SUB(CURDATE(),INTERVAL -1 YEAR);-- 一年后日期:20178-06-12 -- MySQL date_sub() 日期时间函数 和 date_add() 用法一致,并且可以用INTERNAL -1 xxx的形式互换使用; -- 另外,MySQL 中还有两个函数 subdate(), subtime(),建议,用 date_sub() 来替代。 -- MySQL 另类日期函数:period_add(P,N), period_diff(P1,P2) -- 函数参数“P” 的格式为“YYYYMM” 或者 “YYMM”,第二个参数“N” 表示增加或减去 N month(月)。 -- MySQL period_add(P,N):日期加/减去N月。 SELECT PERIOD_ADD(201705,2), PERIOD_ADD(201705,-2);-- 201707 20170503 -- period_diff(P1,P2):日期 P1-P2,返回 N 个月。 SELECT PERIOD_DIFF(201706, 201703);-- -- datediff(date1,date2):两个日期相减 date1 - date2,返回天数 SELECT DATEDIFF('2017-06-05','2017-05-29');-- 7 -- TIMEDIFF(time1,time2):两个日期相减 time1 - time2,返回 TIME 差值 SELECT TIMEDIFF('2017-06-05 19:28:37', '2017-06-05 17:00:00');-- 02:28:37 -- MySQL日期转换函数 SELECT TIME_TO_SEC('01:00:05'); -- 3605 SELECT SEC_TO_TIME(3605);-- 01:00:05 -- MySQL (日期、天数)转换函数:to_days(date), from_days(days) SELECT TO_DAYS('0000-00-00'); -- NULL SELECT TO_DAYS('2017-06-05'); -- 736850 SELECT FROM_DAYS(0); -- '0000-00-00' SELECT FROM_DAYS(736850); -- '2017-06-05' -- MySQL Str to Date (字符串转换为日期)函数:str_to_date(str, format) SELECT STR_TO_DATE('06.05.2017 19:40:30', '%m.%d.%Y %H:%i:%s');-- 2017-06-05 19:40:30 SELECT STR_TO_DATE('06/05/2017', '%m/%d/%Y'); -- 2017-06-05 SELECT STR_TO_DATE('2017/12/3','%Y/%m/%d') -- 2017-12-03 SELECT STR_TO_DATE('20:09:30', '%h:%i:%s') -- NULL(超过12时的小时用小写h,得到的结果为NULL) -- 日期时间格式化 SELECT DATE_FORMAT('2017-05-12 17:03:51', '%Y年%m月%d日 %H时%i分%s秒');-- 2017年05月12日 17时03分51秒(具体需要什么格式的数据根据实际情况来;小写h为12小时制;) SELECT TIME_FORMAT('2017-05-12 17:03:51', '%Y年%m月%d日 %H时%i分%s秒');-- 0000年00月00日 17时03分51秒(time_format()只能用于时间的格式化) -- STR_TO_DATE()和DATE_FORMATE()为互逆操作 -- 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 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second) SELECT MAKEDATE(2017,31); -- '2017-01-31' SELECT MAKEDATE(2017,32); -- '2017-02-01' SELECT MAKETIME(19,52,35); -- '19:52:35' -- MySQL 时区(timezone)转换函数:convert_tz(dt,from_tz,to_tz) SELECT CONVERT_TZ('2017-06-05 19:54:12', '+08:00', '+00:00'); -- 2017-06-05 11:54:12 -- MySQL (Unix 时间戳、日期)转换函数 -- unix_timestamp(), unix_timestamp(date), from_unixtime(unix_timestamp), from_unixtime(unix_timestamp,format) -- 将具体时间时间转为timestamp SELECT UNIX_TIMESTAMP();-- 当前时间的时间戳:1494815779 SELECT UNIX_TIMESTAMP('2017-05-15');-- 指定日期的时间戳:1494777600 SELECT UNIX_TIMESTAMP('2017-05-15 10:37:14');-- 指定日期时间的时间戳:1494815834 -- 将时间戳转为具体时间 SELECT FROM_UNIXTIME(1494815834);-- 2017-05-15 10:37:14 SELECT FROM_UNIXTIME(1494815834, '%Y年%m月%d日 %h时%分:%s秒');-- 获取时间戳对应的格式化日期时间 -- MySQL 时间戳(timestamp)转换、增、减函数 SELECT TIMESTAMP('2017-05-15');-- 2017-05-15 00:00:00 SELECT TIMESTAMP('2017-05-15 08:12:25', '01:01:01');-- 2017-05-15 09:13:26 SELECT DATE_ADD('2017-05-15 08:12:25', INTERVAL 1 DAY);-- 2017-05-16 08:12:25 SELECT TIMESTAMPADD(DAY, 1, '2017-05-15 08:12:25');-- 2017-05-16 08:12:25; MySQL timestampadd() 函数类似于 date_add()。 SELECT TIMESTAMPDIFF(YEAR, '2017-06-01', '2016-05-15');-- -1 SELECT TIMESTAMPDIFF(MONTH, '2017-06-01', '2016-06-15');-- -11 SELECT TIMESTAMPDIFF(DAY, '2017-06-01', '2016-06-15');-- -351 SELECT TIMESTAMPDIFF(HOUR, '2017-06-01 08:12:25', '2016-06-15 00:00:00');-- -8432 SELECT TIMESTAMPDIFF(MINUTE, '2017-06-01 08:12:25', '2016-06-15 00:00:00');-- -505932 SELECT TIMESTAMPDIFF(SECOND, '2017-06-01 08:12:25', '2016-06-15 00:00:00');-- -30355945
위 내용은 MySQL 날짜 및 시간 처리 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











MySQL은 설치가 간단하고 강력하며 데이터를 쉽게 관리하기 쉽기 때문에 초보자에게 적합합니다. 1. 다양한 운영 체제에 적합한 간단한 설치 및 구성. 2. 데이터베이스 및 테이블 작성, 삽입, 쿼리, 업데이트 및 삭제와 같은 기본 작업을 지원합니다. 3. 조인 작업 및 하위 쿼리와 같은 고급 기능을 제공합니다. 4. 인덱싱, 쿼리 최적화 및 테이블 파티셔닝을 통해 성능을 향상시킬 수 있습니다. 5. 데이터 보안 및 일관성을 보장하기위한 지원 백업, 복구 및 보안 조치.

Navicat 자체는 데이터베이스 비밀번호를 저장하지 않으며 암호화 된 암호 만 검색 할 수 있습니다. 솔루션 : 1. 비밀번호 관리자를 확인하십시오. 2. Navicat의 "비밀번호 기억"기능을 확인하십시오. 3. 데이터베이스 비밀번호를 재설정합니다. 4. 데이터베이스 관리자에게 문의하십시오.

Navicat Premium을 사용하여 데이터베이스 생성 : 데이터베이스 서버에 연결하고 연결 매개 변수를 입력하십시오. 서버를 마우스 오른쪽 버튼으로 클릭하고 데이터베이스 생성을 선택하십시오. 새 데이터베이스의 이름과 지정된 문자 세트 및 Collation의 이름을 입력하십시오. 새 데이터베이스에 연결하고 객체 브라우저에서 테이블을 만듭니다. 테이블을 마우스 오른쪽 버튼으로 클릭하고 데이터 삽입을 선택하여 데이터를 삽입하십시오.

MySQL은 오픈 소스 관계형 데이터베이스 관리 시스템입니다. 1) 데이터베이스 및 테이블 작성 : CreateAbase 및 CreateTable 명령을 사용하십시오. 2) 기본 작업 : 삽입, 업데이트, 삭제 및 선택. 3) 고급 운영 : 가입, 하위 쿼리 및 거래 처리. 4) 디버깅 기술 : 확인, 데이터 유형 및 권한을 확인하십시오. 5) 최적화 제안 : 인덱스 사용, 선택을 피하고 거래를 사용하십시오.

MariaDB 용 Navicat은 암호가 암호화 된 양식으로 저장되므로 데이터베이스 비밀번호를 직접 볼 수 없습니다. 데이터베이스 보안을 보장하려면 비밀번호를 재설정하는 세 가지 방법이 있습니다. Navicat을 통해 비밀번호를 재설정하고 복잡한 비밀번호를 설정하십시오. 구성 파일을 봅니다 (권장되지 않음, 위험이 높음). 시스템 명령 줄 도구를 사용하십시오 (권장되지 않으면 명령 줄 도구에 능숙해야 함).

응용 프로그램을 열고 새로운 연결 (Ctrl n)을 선택하여 Navicat에서 새로운 MySQL 연결을 만들 수 있습니다. "MySQL"을 연결 유형으로 선택하십시오. 호스트 이름/IP 주소, 포트, 사용자 이름 및 비밀번호를 입력하십시오. (선택 사항) 고급 옵션을 구성합니다. 연결을 저장하고 연결 이름을 입력하십시오.

데이터베이스에 연결할 때의 일반적인 오류 및 솔루션 : 사용자 이름 또는 비밀번호 (오류 1045) 방화벽 차단 연결 (오류 2003) 연결 시간 초과 (오류 10060) 소켓 연결 (오류 1042) SSL 연결 오류 (오류 10055) 너무 많은 연결 시도가 차단되는 경우 (오류 1049) 데이터베이스에 연결되지 않음 (오류 1049) 데이터베이스에 연결되지 않습니다 (오류 1049).

Navicat에서 SQL을 수행하는 단계 : 데이터베이스에 연결하십시오. SQL 편집기 창을 만듭니다. SQL 쿼리 또는 스크립트를 작성하십시오. 실행 버튼을 클릭하여 쿼리 또는 스크립트를 실행하십시오. 결과를 봅니다 (쿼리가 실행 된 경우).
