在其他帖子中,您建议使用
TO_DATE(your_date as String, 'YYYY-MM-DD')
但在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
但它返回例如:
1971-05-e+
而不是:
1971-05-08
答案 0 :(得分:5)
假设原始数据类型实际上是浮点数,可以使用多个铸件来完成:
DECLARE @Date float = 19710508
SELECT CAST(
CAST(
CAST(@Date as int)
as char(8))
as date)
结果(日期数据类型):
1971-05-08
内部强制删除小数点后的所有数字, 中间转换将int值转换为char值,因为不允许从int到date的显式转换,并且外部转换将char值转换为date。
答案 1 :(得分:2)
你可以试试这个:
DECLARE @input FLOAT = 20160725
SELECT
CONVERT(DATE, CAST(CAST(@input AS INT) AS CHAR(8)), 112)
我们需要CAST到INT,因为我们想要删除小数点后的零数字,类似于value = 20160725.000000.