麻烦将varchar转换为日期

时间:2014-04-23 16:28:26

标签: mysql sql sql-server phpmyadmin

我正在使用MAMP的phpMyAdmin作为我的数据库。 我在使用CONVERT sql函数时遇到了麻烦。这是一个常见的问题吗?

SELECT CONVERT(varchar(10), Date, 103)

这会给我以下语法错误。这是给出的常见错误之一,但我一直在尝试很多不同的方式。

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   在'varchar(10),Date,103)附近'第1行

如果无法解决上述问题,我可以通过添加具有特定日期格式样式的新列来绕过此问题吗?

3 个答案:

答案 0 :(得分:2)

您正尝试在数据库中使用语法。

没有CONVERT函数的第三个参数。

  

CONVERT(expr,type),CONVERT(expr USING transcoding_name)

     

CONVERT()和CAST()函数采用任何类型的表达式   生成指定类型的结果值。

http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html#function_convert

要在中获取相同的格式,您需要使用DATE_FORMAT()函数

这应该给你相同的结果DATE_FORMAT(date,'%d/%m/%Y')

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

 select DATE_FORMAT(Current_Date(),'%d/%m/%Y')

这里是SQL Fiddle http://sqlfiddle.com/#!2/d41d8/36014

答案 1 :(得分:1)

这取决于你想做什么。

如果您尝试将表示Unix时间戳的整数转换为使用MySQL的日期,您可能需要使用FROM_UNIXTIME()

另请参阅:MySQL: Convert INT to DATETIME

如果您尝试将代表日期的字符串转换为日期,则可以使用STR_TO_DATE()

之后,如果您对该日期执行某些处理并希望将其转换回字符串,则您需要DATE_FORMAT()

另请参阅:mySQL convert varchar to date

答案 2 :(得分:1)

  

日期格式正确但存储为varchar(10)当前状态如下:21/04/2014

     

是的,我有一个列有日期但是设置为varchar,因为它现在没有被使用我需要将它们转换为日期。

如果您想从字符串形式的日期中获取日期表单,那么

select str_to_date( date_column, '%d/%m/%Y' ) as date from table_name

这会将21/04/2014作为2014-04-21MySQL中的常规默认日期格式返回。