Разница между NOW(), SYSDATE() и CURRENT_DATE() в MySQL
Какая разница между NOW()
, SYSDATE()
, CURRENT_DATE()
в MySQL и где она может использоваться в реальном сценарии.
Я пробовал NOW()
, SYSDATE()
, CURRENT_DATE()
, когда я вставляю данные в таблицу, а тип данных столбца TIMESTAMP
всем даются те же даты и время.
Ответы
Ответ 1
Current_date() предоставит вам только дату.
now() дает вам дату, когда начинается инструкция, процедура и т.д.
sysdate() дает вам текущее время и время.
Посмотрите на секунды после ожидания через 5 секунд() 1 sysdate() 1 со следующим запросом (прокрутите вправо):
select now(),sysdate(),current_date(),sleep(5),now(),sysdate();
-- will give
-- now() sysdate() current_date() sleep(5) now()1 sysdate()1
-- 6/10/2014 2:50:04 AM 6/10/2014 2:50:04 AM 6/10/2014 12:00:00 AM 0 6/10/2014 2:50:04 AM 6/10/2014 2:50:09 AM
Ответ 2
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 |
+---------------------+----------+---------------------+
Ответ 3
Current_date возвращает метку времени клиента, в то время как sysdate возвращает отметку времени сервера. Если оба сервера и клиент находятся на одном компьютере, то результат обеих команд одинаковый. Но в случае, если ваш ранг, например, в США, а ваши клиенты находятся в Китае, эти две функции возвращают совершенно разные результаты.
Я не знаю о thew now(), извините: -)
Ответ 4
CURRENT_DATE()
является синонимом многих других подобных функций, все из которых обеспечивают только дату.
Существует тонкая разница между NOW()
и SYSDATE()
, которую вы можете прочитать больше на этом официальном сайте MySQL.
Ответ 5
NOW() возвращает постоянное время, которое указывает время, в которое оператор начал выполнять, тогда как SYSDATE() возвращает время, в которое оно выполнено... Иными словами, NOW() показывает время выполнения запроса, а SYSDATE() показывает само выполнение время..