微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在SQL中的日期时间列中仅插入日期部分

如何解决如何在SQL中的日期时间列中仅插入日期部分

我想将自动生成的日期插入到我的sql表中。但是,在同时使用dateime和timestamp数据类型时,它也会增加时间。但是我只需要修饰日期部分。我该怎么办

解决方法

CURDATE() returns the present date就像NOW()返回MySQL中的当前日期/时间一样。

并且,DATE(any_datetime_or_timestamp) retrieves just the date赋予了任何DATEDATETIMETIMESTAMP值。

所以您可以做类似的事情

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 举报,一经查实,本站将立刻删除。