far*_*usz 0 sql sql-server-2008
在其他帖子中,您建议使用
TO_DATE(your_date as String, 'YYYY-MM-DD')
Run Code Online (Sandbox Code Playgroud)
但在SQL Server中没有功能to_date:(
我试过这样的事情:
select
start_date2 = replace(substring(cast(start_date as varchar),1,5),'.','') + '-' +
case when substring(cast(start_date as char),6,2) ='1e' then '10' else substring(cast(start_date as char),6,2) end + '-' +
cast(substring(cast(start_date as char),8,2)as char)
from
my_table
Run Code Online (Sandbox Code Playgroud)
但它返回例如:
1971-05-e+
Run Code Online (Sandbox Code Playgroud)
代替:
1971-05-08
Run Code Online (Sandbox Code Playgroud)
假设原始数据类型实际上是浮点数,可以使用多个铸件来完成:
DECLARE @Date float = 19710508
SELECT CAST(
CAST(
CAST(@Date as int)
as char(8))
as date)
Run Code Online (Sandbox Code Playgroud)
结果(日期数据类型):
1971-05-08
Run Code Online (Sandbox Code Playgroud)
内部强制转换删除小数点后的所有数字.中间强制转换将int值转换为char值,因为不允许从int到date的显式强制转换,并且外部强制转换将char值转换为date.