将日期插入 MySQL 数据库时如何忽略时间戳
How to neglect timestamps when inserting date to MySQL database
我想在 MySQL table 中插入一个日期。但是,即使我使用 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)
此问题与 python 无关,一旦您在 mysql 的日期时间字段中插入日期,它会自动将时间和秒附加为 0。
您想要 select 日期字段,如下所示:
SELECT DATE(Date), name FROM dates;
如果要保留特定格式,可以将列声明为数据类型 TEXT。
Create table dates ( Date TEXT, name TEXT )
strftime 无论如何都会转换为字符串。
或者 DATE,如果您只是想去掉时间戳。
Create table dates ( Date DATE, name TEXT )
在这种情况下,您不需要将日期时间对象转换为字符串。它会自己转换成目标数据类型。
显然列 Date
的数据类型为 DATETIME
或 TIMESTAMP
.
如果您不需要该列的时间部分,则应将数据类型更改为 DATE
:
ALTER TABLE dates MODIFY Date DATE;
我想在 MySQL table 中插入一个日期。但是,即使我使用 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)
此问题与 python 无关,一旦您在 mysql 的日期时间字段中插入日期,它会自动将时间和秒附加为 0。
您想要 select 日期字段,如下所示:
SELECT DATE(Date), name FROM dates;
如果要保留特定格式,可以将列声明为数据类型 TEXT。
Create table dates ( Date TEXT, name TEXT )
strftime 无论如何都会转换为字符串。
或者 DATE,如果您只是想去掉时间戳。
Create table dates ( Date DATE, name TEXT )
在这种情况下,您不需要将日期时间对象转换为字符串。它会自己转换成目标数据类型。
显然列 Date
的数据类型为 DATETIME
或 TIMESTAMP
.
如果您不需要该列的时间部分,则应将数据类型更改为 DATE
:
ALTER TABLE dates MODIFY Date DATE;