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
'programing' 카테고리의 다른 글
Wordpress REST API _fields 및 _embed 파라미터가 동시에 작동하지 않습니다. (0) | 2023.09.16 |
---|---|
C++ 문자열을 한 줄에 여러 개 연결하려면 어떻게 해야 합니까? (0) | 2023.09.16 |
원형 외래 키가 있는 두 개의 테이블에서 삭제 (0) | 2023.09.16 |
MySQL에서 MSSQL IDENTITY 열과 동등함 (0) | 2023.09.16 |
CORS(Cross-Origin Resource Sharing) 개념 (0) | 2023.09.16 |