我有两个字段。
出生=数据类型十进制(12,4)&日期=数据类型日期
Birth Date
19650101 2015-07-09
我如何得到一个看起来像这样的结果
我希望结果像这样
Birth Date
1965-01-01 2015-07-09
其中Birth是Date数据类型而不是小数(12,4)
答案 0 :(得分:2)
要将号码19650101
转换为使用日期
CONVERT(DATETIME, CAST(Birth AS VARCHAR(8)), 112)
要获得年数(小数点后一位),您可以这样做:
ROUND(
DATEDIFF(day,
CONVERT(DATETIME, CAST(Birth AS VARCHAR(8)), 112),
[Date])/365.25
,1)
这不是确切的,但应该足够接近一年的十分之一。
答案 1 :(得分:1)
您可以使用:
-- Create demo data
CREATE TABLE #dates(birth int, date date)
INSERT INTO #dates(birth,date)
VALUES(19650101,N'2015-07-09')
-- Your work
SELECT CONVERT(date,CONVERT(nvarchar(max),birth),112) as birth, date,
DATEDIFF(year,
CONVERT(date,CONVERT(nvarchar(max),birth),112),
date
) as years
FROM #dates
-- Cleanup
DROP TABLE #dates
这取决于您提供的确切格式(19650101
)。
答案 2 :(得分:1)
我认为你不需要回合。只需转换您的小数值并将“ - ”如下所示:)
select left(birth,4) +'-' +
substring(convert(nvarchar,birth),5,2)+'-'+
substring(convert(nvarchar,birth),7,2)
答案 3 :(得分:0)
以下是执行此转换的一种方法。
cast(cast(FLOOR(birth) as CHAR(8)) as DATE)