将日期插入 MySQL 数据库时如何忽略时间戳

Posted

技术标签:

【中文标题】将日期插入 MySQL 数据库时如何忽略时间戳【英文标题】:How to neglect timestamps when inserting date to MySQL database 【发布时间】:2021-03-10 20:58:21 【问题描述】:

我想在 mysql 表中插入一个日期。但是,即使我使用strftime()时间戳也会显示为00:00:00。我怎样才能摆脱它?

insert_stmt = (
    "insert into dates (Date)"
    "values (%s)"
)

date = datetime.date(2020, 4, 6)
formatted_date = date.strftime('%Y-%m-%d')

data = (formatted_date,)
mycursor.execute(insert_stmt, data)
mydb.commit()

输出:

mysql> select * from dates;
+---------------------+------+
| Date                | name |
+---------------------+------+
| 2020-03-23 00:00:00 | John |
| 2020-03-03 00:00:00 | NULL |
| 2020-04-06 00:00:00 | NULL |
+---------------------+------+
3 rows in set (0.06 sec)

【问题讨论】:

提交的Date是mysql中的日期时间字段,需要选择SELECT DATE(<Date_field>) FROM dates; 【参考方案1】:

显然Date 列的数据类型为DATETIMETIMESTAMP。 如果不需要该列的时间部分,则应将数据类型更改为DATE

ALTER TABLE dates MODIFY Date DATE;

【讨论】:

【参考方案2】:

这个问题与python无关,一旦你在mysql的datetime字段中插入一个日期,它会自动将时间和秒追加为0。

您想像这样选择日期字段:

SELECT DATE(Date), name FROM dates;

【讨论】:

【参考方案3】:

如果要保留特定格式,可以将列声明为数据类型 TEXT。

Create table dates ( Date TEXT, name TEXT )

无论如何,strftime 无论如何都会转换为字符串。

或日期,如果您只是想摆脱时间戳。 Create table dates ( Date DATE, name TEXT )

在这种情况下,您不需要将日期时间对象转换为字符串。它会自行转换成目标数据类型。

【讨论】:

以上是关于将日期插入 MySQL 数据库时如何忽略时间戳的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PHP 插入查询将当前时间戳插入 MySQL 数据库

Knexjs 返回 mysql 时间戳、日期时间列作为 Javascript 日期对象

添加新行时自动插入日期戳

如何将格式为“3/22/2018 12:24:29 PM”的日期时间字符串格式化为sql时间戳以插入内存数据库中的h2?

从 Python 将 unix 时间戳插入 MySQL [重复]

MySQL - 当时间戳是日期的一部分时,如何查找昨天的记录