将同时包含 MM-DD-YYYY 和 DD-MM-YYYY 日期的列转换为仅 MM-DD-YYYY?

问题描述 投票:0回答:1

我无法找到解决方案来让我的表格上的日期列正确地从 mm-dd-yyyydd-mm-yyyy 的混合转换/更改为 mm-dd-yyyy

格式为 mm-dd-yyyy 的列中正确的日期用“/”分隔,其余格式为 dd-mm-yyyy 的日期用“-”分隔。我使用的数据来自 Kaggle Walmart 数据集。

日期
2010 年 5 月 2 日
2010年12月2日
2010年2月19日
2010年2月26日
2010年5月3日
2010年12月3日
2010年3月19日
2010年3月26日

我将数据集作为平面文件 CSV 导入 SQL Server,其中将数据导入为 varchar(50),我可以轻松地将其他列操作为其他数据类型(DECIMAL 和 INT),但 [Date] 列一直给我带来麻烦我在尝试将数据转换为“日期”数据类型后收到此消息:

从字符串转换日期和/或时间时转换失败。

我的逻辑告诉我使用“/”和“-”作为分隔符将列分成三列,但这仍然会给我带来 mm-dddd-mm 混合的问题。

我有两个主要问题。

  1. 我收到的消息是否是由于日期混合而导致 SQL 将该列视为字符串?

  2. 是否有最佳方法将所有日期转换为 mm-dd-yyyy 格式?

非常感谢任何解决问题的帮助!

sql-server t-sql data-cleaning
1个回答
0
投票

如果您确实拥有两种格式的日期,而没有其他任何信息来指示如何处理它们,则“不可能”准确确定每个日期的正确格式。 原因是存储的值不明确。例如,“01-02-2024”可以是

1 月 2 日或 2 月 1 日,并且如果有足够的行,您肯定会遇到两者都是正确解释的情况。

其他系统通过解析前端的日期、使用原始用户系统或浏览器的文化设置来处理此类事情,然后首先存储为日期而不是字符串。

我的逻辑告诉我使用“/”和“-”作为分隔符将列分成三列,但这仍然会给我带来 mm-dd 和 dd-mm 混合的问题。

不。大多数数据库都有专用的

date

datetime

 类型。用那个。

© www.soinside.com 2019 - 2024. All rights reserved.