【问题标题】:Convert varchar column to smalldatetime将 varchar 列转换为 smalldatetime
【发布时间】:2010-10-01 14:35:55
【问题描述】:
我有一个包含 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.
如何转换?
【问题讨论】:
标签:
sql-server
sql-server-2005
varchar
smalldatetime
【解决方案1】:
我认为您需要进行一些字符串操作才能使其正常工作,因为我认为 SQL 期望“MM.dd.yyyy”。因此,请先更新您的表格以翻转月份和日期,然后才能完成转换。
update YourTable
set Data = SUBSTRING(Data,4,3) + LEFT(Data,3) + RIGHT(Data,4)
【解决方案2】:
您可以使用:
SELECT ID, CAST(VarcharCol As SmallDateTime) as DateTimeCol From Test1
这将返回一个 varcharcol 值作为 smalldatetime 的表
然后用新值更新 varcharcol 的内容。
【解决方案3】:
如果你不想隐式转换为smalldatetime,你应该使用CONVERT and the argument style。
dd.MM.yyyy格式对应样式 104.
例如:
SELECT CONVERT(smalldatetime, '31.12.2018', 104) AS "Result"
Result
------
2018-12-31 00:00:00