mysql - 如何将varchar转换为日期时间,不起作用
问题描述
我已将文本文件中的一些列导入到我的表中stuff
。
我必须将日期导入为varchar(255)
. 我想将数据类型从转换varchar
为datetime
.
日期数据格式为:
6/2/2018 3:00:00 PM
6/2/2018 4:00:00 PM
6/2/2018 5:00:00 PM
我尝试了以下但没有成功:
select datum from stuff str_to_date(datum, %d/%m/%Y)
和 :
select datum from stuff where convert(datetime,datum,103);
解决方案
您的查询语法不正确。
STR_TO_DATE()
确实是为了将字符串转换为日期。作为第二个参数,它需要一个表示输入字符串格式的字符串(不是文字字符串!)。
鉴于您的日期格式,您可以使用:
SELECT STR_TO_DATE('6/2/2018 3:00:00 PM', '%e/%c/%Y %l:%i:%s %p')
格式说明符详细信息:
%e
: 日期,数字 (0..31
)%c
: 月份,数字 (0..12
)%Y
:年份,数字,四位数%l
: 小时 (1..12
)%i
: 分钟,数字 (00..59
)%s
: 秒 (00..59
)%p
:AM
或PM
如果您实际上正在寻找转换列的数据类型,那么您需要创建一个临时列,使用转换后的数据对其进行更新,然后删除原始列并重命名临时列,例如:
ALTER TABLE stuff ADD (datum_new datetime);
UPDATE stuff SET datum_new = STR_TO_DATE(datum, '%e/%c/%Y %l:%i:%s %p');
ALTER TABLE stuff DROP datum;
ALTER TABLE stuff CHANGE COLUMN datum_new datum datetime;
如果您使用的是 MySQL 8.0,最后一条语句可以写成:
ALTER TABLE stuff RENAME COLUMN datum_new TO datum;
推荐阅读
- python - PYOMO:如何使用 glpk 创建求解器
- sql - 同时将 CSV 加载到 PostgreSQL 转换类型中
- javascript - React Native FlatList 被截断并且不显示所有项目
- sql - 在 SQL Server 2019 中,是否有任何最佳和有效的方法来对包含约 3000 万条数据的表进行分区,且停机时间最短?
- amazon-web-services - 普通用户在kibana中需要什么权限
- tensorflow - 如何修改冻结的 pb 文件?
- powershell - Visual Studio Code 在非默认终端上打开并运行脚本
- flutter - 需要在 Flutter App 中检查输入的值是否为数量
- mysql - 实体框架mysql连接字符串错误?
- ansible - Ansible - 循环对象列表内的嵌套数组?