如何解决如何在SQL中的日期时间列中仅插入日期部分
我想将自动生成的日期插入到我的sql表中。但是,在同时使用dateime和timestamp数据类型时,它也会增加时间。但是我只需要修饰日期部分。我该怎么办
解决方法
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,就可以派上用场。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。