programing

MySQL에서 NOW(), SYSDATE() 및 CURRENT_DATE()의 차이

subpage 2023. 9. 16. 09:05
반응형

MySQL에서 NOW(), SYSDATE() 및 CURRENT_DATE()의 차이

어떤 차이가 있습니까?NOW(),SYSDATE(),CURRENT_DATE()실제 시나리오에서 사용할 수 있는 MySQL에 있습니다.

나는 노력했다.NOW(),SYSDATE(),Current_Date()표에 데이터를 삽입하고 열 데이터 유형을 입력하면 다음과 같습니다.TIMESTAMP모두 같은 날짜와 시간이 주어집니다.

CURRENT_DATE(): 날짜만 알려줄 겁니다
NOW(): 성명서, 문서 등의 날짜를 알려드립니다.시작된.
SYSDATE(): 현재 날짜 시간을 알려 드립니다.
5초를 기다린 후의 시간을 살펴봅니다.now()1 sysdate()1다음 쿼리와 함께(오른쪽으로 이동):

지금 날짜, 현재 날짜, 현재 날짜, sleep(5), 지금 날짜를 선택합니다.
-- 줄 것입니다-- now () sysdate () current_date () sleep(5) now () sysdate ()1-- 6/10/2014 2:50:04 오전 6/10/2014 2:50:04 오전 6/10/2014 12:00 오전 06/10/2014 2:50:04 오전 6/10/2014 2:50:09

NOW()문이 실행되기 시작한 시간을 나타내는 일정한 시간을 반환합니다.(저장된 함수 또는 트리거 내에서,NOW() 함수 또는 트리거링 문이 실행되기 시작한 시간을 반환합니다.)이는 다음에 대한 동작과 다릅니다.SYSDATE(), 실행되는 정확한 시간을 반환합니다.

mysql> SELECT NOW(), SLEEP(2), NOW();
+---------------------+----------+---------------------+
| NOW()               | SLEEP(2) | NOW()               |
+---------------------+----------+---------------------+
| 2006-04-12 13:47:36 |        0 | 2006-04-12 13:47:36 |
+---------------------+----------+---------------------+

mysql> SELECT SYSDATE(), SLEEP(2), SYSDATE();
+---------------------+----------+---------------------+
| SYSDATE()           | SLEEP(2) | SYSDATE()           |
+---------------------+----------+---------------------+
| 2006-04-12 13:47:44 |        0 | 2006-04-12 13:47:46 |
+---------------------+----------+---------------------+

Current_date는 클라이언트의 타임 스탬프를 반환하고 sysdate는 서버의 타임 스탬프를 반환합니다.서버와 클라이언트가 모두 같은 컴퓨터에 있으면 두 명령어의 결과는 동일합니다.그러나 예를 들어 서버가 미국에 있고 고객이 중국에 있는 경우 이 두 기능은 완전히 다른 결과를 반환합니다.

지금은 잘 모르겠어요(), 죄송합니다 :-)

사이의 주요한 차이점 중 하나.sysdate()그리고.now()최근에 뒤에서 물었어요그것은 그들의 실행 시점과 빈도의 차이였습니다.sysdate()동일한 문장 내에서 매번 평가됩니다. 즉, 해당 문장이 적용되는 모든 행에서. 그러나now()쿼리 실행을 시작할 때 한 번만 평가됩니다.

이 차이는 행이 몇 개 밖에 없을 때는 눈에 띄지 않습니다.하지만 수백만 개의 행이 있을 때는 매우 중요합니다.예를 들어 RHEL7에서는sysdate()수백만 개의 행이 있을 때 사용할 수 있도록 값비싼 시스템 호출을 하는 것으로 보입니다.sysdate(),용,한을 사용했습니다.now()단 몇 초밖에 걸리지 않은 똑같은 진술!

이것은 정밀한 문제들 위에 있습니다, 왜냐하면sysdate()는 시간 t와 시간 t+50밀리 사이의 다른 값을 반환합니다.

curdate(), 둘 다 어떻게 다른지 궁금했어요.now()아니면sysdate()다음과 같이 나와 있습니다. MySQL Reference에는 다음과 같이 나와 .curdate()다처럼 now().

참조:MySQL 5.7 Reference - Date and Time Functions -- 위의 내용은 모두 이 페이지에서 설명합니다.하지만 페이지에 흩어져 있어 각 기능별 참조는 물론 개요 부분까지 읽어봐야 할 것 같습니다.

CURRENT_DATE()날짜만을 제공하는 다른 많은 유사한 기능들의 동의어입니다.사이에 미묘한 차이가 있습니다.NOW()그리고.SYSDATE()이것에 대해 더 읽어 볼 수 있는 것.
MySQL 공식 웹사이트 페이지.

CURRENT_DATE는 정적이고 날짜 인덱스와 더 잘 작동합니다.

NOW()는 동적인 것 같고 인덱스를 사용하지 않습니다. (MySQL 내부에 대한 자세한 설명을 듣고 싶습니다!)

를 사용한 실제 예시가 있습니다.NOW():

explain SELECT DISTINCT e.manager_id, m.manager_name FROM events e JOIN manager m ON m.manager_id = e.manager_id
    WHERE m.manager_name != '' AND e.event_when > NOW() - INTERVAL 1 YEAR;
+---------+----------+------------------------------+
| rows    | filtered | Extra                        |
+---------+----------+------------------------------+
| 1333648 |    29.06 | Using where; Using temporary |
|       1 |    90.59 | Using where                  |
+---------+----------+------------------------------+

을 하여 를 으로 의 일 을 하여 의 으로 를 CURRENT_DATE(또는CURRENT_TIMESTAMP):

explain SELECT DISTINCT e.manager_id, m.manager_name FROM events e JOIN manager m ON m.manager_id = e.manager_id
   WHERE m.manager_name != '' AND e.event_when > CURRENT_DATE - INTERVAL 1 YEAR;
+--------+----------+----------------------------------------+
| rows   | filtered | Extra                                  |
+--------+----------+----------------------------------------+
| 361470 |   100.00 | Using index condition; Using temporary |
|      1 |    90.59 | Using where                            |
+--------+----------+----------------------------------------+

NOW()는 문이 실행되기 시작한 시간을 나타내는 일정한 시간을 반환하는 반면 SYSDATE()는 실행된 시간을 반환합니다.OR(즉, NOW)는 쿼리 실행 시간을 나타내고 SYSDATE()는 자체 실행 시간을 나타냅니다.

언급URL : https://stackoverflow.com/questions/24137752/difference-between-now-sysdate-current-date-in-mysql

반응형