3

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

我尝试使用 Enterprise Management Studio Express 对其进行转换,但收到此错误:

The conversion of char data type to smalldatetime data type resulted in an out-of-range smalldatetime value.

我怎样才能转换它?

4

3 回答 3

2

我认为您需要进行一些字符串操作才能使其正常工作,因为我认为 SQL 期望“MM.dd.yyyy”。因此,首先更新您的表以翻转月份和日期,然后转换应该通过。

update YourTable
    set Data = SUBSTRING(Data,4,3) + LEFT(Data,3) + RIGHT(Data,4)
于 2010-10-01T14:49:39.203 回答
0

您可以使用:
SELECT ID, CAST(VarcharCol As SmallDateTime) as DateTimeCol From Test1
这将返回一个 varcharcol 值为 smalldatetime 的表,然后使用新值更新 varcharcol 的内容。

于 2010-10-01T14:46:59.160 回答
0

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

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

Result
------
2018-12-31 00:00:00
于 2018-12-14T10:19:20.387 回答