Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ความแตกต่างระหว่าง CURDATE() และ NOW() ใน MySQL

NOW() และ CURDATE() ทั้งคู่คืนค่าเวลาปัจจุบัน แต่มีความแตกต่างในส่วนที่คืนค่า:

ฟังก์ชันคืนค่าชนิดข้อมูลตัวอย่าง
NOW()วันที่และเวลาปัจจุบันDATETIME2018-11-27 15:17:01
CURDATE()เฉพาะวันที่ปัจจุบันDATE2018-11-27
CURTIME()เฉพาะเวลาปัจจุบันTIME15:17:01

ตัวอย่างการใช้งาน

NOW() - วันที่และเวลา

mysql> SELECT NOW();
+---------------------+
| now()               |
+---------------------+
| 2018-11-27 15:17:01 |
+---------------------+
1 row in set (0.00 sec)

CURDATE() - เฉพาะวันที่

mysql> SELECT CURDATE();
+------------+
| curdate()  |
+------------+
| 2018-11-27 |
+------------+
1 row in set (0.00 sec)

ทดสอบกับตาราง

mysql> CREATE TABLE CurrentdateAndNowDemo (
    -> Time DATETIME
    -> );
Query OK, 0 rows affected (0.82 sec)

mysql> INSERT INTO CurrentdateAndNowDemo VALUES (NOW());
mysql> INSERT INTO CurrentdateAndNowDemo VALUES (CURDATE());
mysql> SELECT * FROM CurrentdateAndNowDemo;
+---------------------+
| Time                |
+---------------------+
| 2018-11-27 15:16:32 |  -- จาก NOW()
| 2018-11-27 00:00:00 |  -- จาก CURDATE() (เวลาเป็น 00:00:00)
+---------------------+
2 rows in set (0.00 sec)

ฟังก์ชันเกี่ยวข้องอื่นๆ

  • SYSDATE() - คล้าย NOW() แต่คืนค่าเวลาที่ Execute จริง (NOW() คืนค่าเวลาเริ่มต้น Statement)
  • UTC_DATE(), UTC_TIME(), UTC_TIMESTAMP() - เวลาในโซน UTC
  • CURRENT_DATE(), CURRENT_TIME(), CURRENT_TIMESTAMP() - ตามมาตรฐาน ANSI SQL

กรณีใช้งานแนะนำ

  • ใช้ NOW() / CURRENT_TIMESTAMP() สำหรับ Timestamp ของระบบ (created_at, updated_at)
  • ใช้ CURDATE() สำหรับวันที่งาน (business date, due_date)
  • ใช้ CURTIME() สำหรับเวลาเฉพาะ (opening_hours, shift_time)