Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将varchar转换为datetime,不起作用_Mysql_Sql - Fatal编程技术网

Mysql 如何将varchar转换为datetime,不起作用

Mysql 如何将varchar转换为datetime,不起作用,mysql,sql,Mysql,Sql,我已将文本文件中的一些列导入我的表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) 以及: 查询的语法不正确 实际上是要将字符串转换为日期。作为第二个参数,

我已将文本文件中的一些列导入我的表
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 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;

您希望输出是什么?“不成功”是什么意思?您好,谢谢您的帮助。我收到错误1411(HY000):第二行上函数str_to_date的日期时间值“6/2/2009 3:00:00 PM”不正确。更新资料集datum_new=STR_至日期(数据,'%e/%c/%Y%l:%i:%s%p');似乎字符串周围还有其他单引号。。。尝试:
UPDATE stuff SET datum\u new=STR\u TO\u DATE(替换(datum),“%e/%c/%Y%l:%i:%s%p”)我必须使用%m/%d/%Y,否则它只能转换700篇文章中的300篇。
ALTER TABLE stuff RENAME COLUMN datum_new TO datum;