格式之间的转换

时间:2014-09-24 10:01:25

标签: mysql sql

我在各种类型的列上连接两个表时遇到问题(出现错误转换数据类型varcharnumeric消息)。 加入逻辑必须是这样的:

ON LC_YEAR (decimal(4,0), null)=DATE (datetime, null)

尝试了各种转换,但失败了。有关转换应该如何的任何想法?
非常感谢,
收率

2 个答案:

答案 0 :(得分:0)

LC_YEAR只是一个包含年份(四位数)的列,日期的格式为:mm / dd / yyyy hh:mm:ss:mmm。我所要做的就是在这两列上加入表格 - 也许,确实是从DATE列中提取年份(但是年(DATE)函数也不起作用)。实际上,消息和列格式之间存在矛盾,但我看到了表格属性中的格式。 谢谢!

答案 1 :(得分:0)

对此的解决依赖于确定每个字段的实际数据类型。

您已指示LC_YEAR为十进制且DATE为日期时间;

但你也指出了#34;格式" DATE的{​​{1}}是mm / dd / yyyy hh:mm:ss:mmm如果数据类型是datetime则格式无关紧要,如果该字段是varchar则格式相关。所以可用的信息有点令人困惑。以下是转换的一些想法。

`LC_YEAR`   `DATE`  
data Type   data type   
decimal     datetime    LC_YEAR = YEAR(`DATE`)
varchar     datetime    LC_YEAR = CAST(YEAR(`DATE`) AS VARCHAR)
varchar     varchar     LC_YEAR = CAST(YEAR(str_to_time(`DATE`,'mm/dd/yyyy hh:mm:ss:mmm')) AS VARCHAR)
decimal     varchar     LC_YEAR = YEAR(str_to_time(`DATE`,'mm/dd/yyyy hh:mm:ss:mmm'))

理想情况下,您不需要加入涉及数据类型的转换