MySQL日期转换

标签 mysql sql

我在 MySQL 中有一个表,其中有一个日期和时间列。此列的格式为 2013 年 2 月 1 日 12:49:40。我也想提取日期部分和时间部分以及月份部分。我正在使用 month(01 February 2013 12:49:40) 这个函数,但它抛出错误。我不能使用 Substring,因为行的宽度不相等。我应该怎么办。

最佳答案

首先把它转换成一个真实的日期(你有的只是文本,MySQL 不知道它是一个日期)

 SELECT STR_TO_DATE(your_column, '%d %M %Y %H:%i:%s')

然后你可以使用诸如 year(), month(), time() 之类的函数来获得你想要的...

 SELECT YEAR(STR_TO_DATE(your_column, '%d %M %Y %H:%i:%s')) FROM your_table...

当然,更好的方法是将列更改为数据类型 datetime 或 timestamp。然后您每次都可以省去 STR_TO_DATE() 函数。

通过在表中添加日期时间或时间戳列来实现

ALTER TABLE your_table ADD COLUMN your_column datetime;

然后“复制”您的列

UPDATE yourTable SET new_column = STR_TO_DATE(old_column, '%d %M %Y %H:%i:%s');

然后您可以删除当前列。

ALTER TABLE DROP COLUMN your_current_column;

或者选择另一种方法,几种可能性...

关于MySQL日期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18446304/

相关文章:

mysql - 点赞数等于评论数?

mysql - 在 docker-compose.yaml 中配置应用程序和 MySQL DB - 无法打开 JDBC 连接

php - 在 "IN CLAUSE"mysql php 中返回 null 或空字符串

mysql - 如何记录特定数据库的mysql慢查询

SQLite - 如何连接来自不同数据库的表?

mysql - 插入 4 个相等的值,其中 1 个不同

mysql - 统计两组人数

当确切值未知时,SQL 在子查询中选择最小值

sql - 如何有条件地选择 Oracle 查询中的列

sql - 表中具有特定列总和的行