如何避免错误消息241(从字符串转换日期和/或时间时转换失败)

时间:2019-04-02 12:44:39

标签: sql oracle

我只是在尝试按具有以下格式的日期的获取日期列进行排序:'04/02/2019'等...我已经在新表中创建了名为ACQ_DATE_CONVERTED的列,通常得到如下结果:2019-04-02。相反,我得到了

  

错误消息241(从字符串转换日期和/或时间时转换失败)

我尝试了以下方法:

SELECT [ITEM], [ACQ_DATE],

CONVERT(DATE,[ACQ_DATE]) AS ACQ_DATE_CONVERTED
,'    ' AS MFG
INTO [ABC].[dbo].[My_Store_records_CONVERTED]
FROM [ABC].[dbo].[My_Store_records]

结果查询后,我按ACQ_Date_Converted排序。

SELECT [ITEM], [ACQ_DATE]
FROM [ABC].[dbo].[My_Store_records_CONVERTED]
ORDER by [ACQ_DATE_CONVERTED]

我的预期结果应在表中如下所示:

       Column_A    Column_B       ColumnC
Rows   ITEM        ACQ_DATE       ACQ_DATE_CONVERTED
1.     ITEM_1      04/09/2007     2007-04-09
2.     Store item  01/26/2008     2008-01-26
etc...

2 个答案:

答案 0 :(得分:0)

能否请您尝试以下查询:

REPLACE(CONVERT(VARCHAR(10), [ACQ_DATE], 111), '/', '-') AS ACQ_DATE_CONVERTED

由于您是从ACQ_DATE进行转换的,因此可以使用ORDER BY [ACQ_DATE],它将起作用。

Demo on DB Fiddle

答案 1 :(得分:0)

感谢所有为这一问题提供帮助的人。

我发现我要排序的列的所有单元格中都有一个隐藏的字符;因此,导致每一行都失败。但是,通过以下内容,我得以克服了这一绊脚石。希望遇到此问题的任何人都能从下面找到我的解决方案。

删除隐藏字符。

, REPLACE([ACQ_DATE], CHAR(10),'') AS [ACQ_DATE_CONVERTED]
,'    ' AS MFG
INTO [ABC].[dbo].[My_Store_records_CONVERTED]
FROM [ABC].[dbo].[My_Store_records]

并按ACQ_DATE_Converted对新表进行排序;

ALTER TABLE [ABC].[dbo].[My_Store_records_CONVERTED] ALTER COLUMN [ACQ_DATE_CONVERTED] DATE NULL;

然后是当然

ORDER by [ACQ_DATE_CONVERTED]

最好的问候, 敏捷