将varchar列转换为smalldatetime

3

我有一张包含800多条记录的表格。这个表中有一个名为“Data”的varchar(10)数据类型的列,其中包含以dd.MM.yyyy格式表示的日期。我想将其转换为smalldatetime。

我尝试使用Enterprise Management Studio Express进行转换,但是我收到了以下错误:

char数据类型转换为smalldatetime数据类型时导致超出范围的smalldatetime值。

如何进行转换?

3个回答

2

我认为你需要进行一些字符串操作才能使其正常工作,因为我认为SQL期望的格式是'MM.dd.yyyy'。所以,首先更新你的表格来交换月份和日期,然后转换应该就可以通过了。

update YourTable
    set Data = SUBSTRING(Data,4,3) + LEFT(Data,3) + RIGHT(Data,4)

已经注意到了 好的 - Bilgin Kılıç

0
你可以使用以下语句:
SELECT ID, CAST(VarcharCol As SmallDateTime) as DateTimeCol From Test1
这将返回一个带有 VarcharCol 值转化为 smalldatetime 类型的表格。 然后,更新 varcharcol 的内容为新值。

0

如果您不想进行隐式转换为 smalldatetime,则应使用 CONVERT 和参数 style
dd.MM.yyyy 格式对应于样式 104
例如:

SELECT CONVERT(smalldatetime, '31.12.2018', 104) AS "Result"

Result
------
2018-12-31 00:00:00

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接