我有一张包含800多条记录的表格。这个表中有一个名为“Data”的varchar(10)数据类型的列,其中包含以dd.MM.yyyy格式表示的日期。我想将其转换为smalldatetime。
我尝试使用Enterprise Management Studio Express进行转换,但是我收到了以下错误:
char数据类型转换为smalldatetime数据类型时导致超出范围的smalldatetime值。
如何进行转换?
我有一张包含800多条记录的表格。这个表中有一个名为“Data”的varchar(10)数据类型的列,其中包含以dd.MM.yyyy格式表示的日期。我想将其转换为smalldatetime。
我尝试使用Enterprise Management Studio Express进行转换,但是我收到了以下错误:
char数据类型转换为smalldatetime数据类型时导致超出范围的smalldatetime值。
如何进行转换?
我认为你需要进行一些字符串操作才能使其正常工作,因为我认为SQL期望的格式是'MM.dd.yyyy'。所以,首先更新你的表格来交换月份和日期,然后转换应该就可以通过了。
update YourTable
set Data = SUBSTRING(Data,4,3) + LEFT(Data,3) + RIGHT(Data,4)
SELECT ID, CAST(VarcharCol As SmallDateTime) as DateTimeCol From Test1
如果您不想进行隐式转换为 smalldatetime,则应使用 CONVERT 和参数 style。
dd.MM.yyyy 格式对应于样式 104。
例如:
SELECT CONVERT(smalldatetime, '31.12.2018', 104) AS "Result"
Result
------
2018-12-31 00:00:00