CURDATE() returns the present date 就像 NOW() 返回 MySQL 中的当前日期/时间。
并且,DATE(any_datetime_or_timestamp) retrieves just the date 给定任何 DATE、DATETIME 或 TIMESTAMP 值。
所以你可以做类似的事情
INSERT INTO tbl (something, day) VALUES ('something', CURDATE())
获取当前日期的一行,不包含时间。
MySQL 让您declare columns something like this 自动生成时间戳。对于 DATETIME,您需要版本 8+。
CREATE TABLE t1 (
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
这些不允许您自动仅插入日期而不插入时间。但是当您查询表格时,您可以这样做
SELECT DATE(ts) tsdate, DATE(dt) dtdate
只取回日期部分。
或者,对于最新版本,如果您只需要日期,可以在表格中使用所谓的generated column。像这样。
CREATE TABLE t2 (
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
tsdate DATE AS DATE(ts)
);
如果您需要在仅限日期的列上使用 index,这会派上用场。