将 Decimal 或 Varchar 转换为日期
Convert Decimal or Varchar into Date
我有 2 个字段。
出生= 数据类型十进制 (12,4) & 日期 = 数据类型日期
Birth Date
19650101 2015-07-09
我怎样才能得到这样的结果
我想要这样的结果
Birth Date
1965-01-01 2015-07-09
其中出生是日期数据类型而不是小数 (12,4)
你可以使用这个:
-- 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
)。
要将数字 19650101
转换为日期,请使用
CONVERT(DATETIME, CAST(Birth AS VARCHAR(8)), 112)
要获取年数(精确到小数点后一位),您可以这样做:
ROUND(
DATEDIFF(day,
CONVERT(DATETIME, CAST(Birth AS VARCHAR(8)), 112),
[Date])/365.25
,1)
这并不准确,但应该足够接近一年的十分之一。
这是进行此转换的一种方法。
cast(cast(FLOOR(birth) as CHAR(8)) as DATE)
我觉得你不需要四舍五入。只需转换您的十进制值并输入“-”,如下所示:)
select left(birth,4) +'-' +
substring(convert(nvarchar,birth),5,2)+'-'+
substring(convert(nvarchar,birth),7,2)
我有 2 个字段。
出生= 数据类型十进制 (12,4) & 日期 = 数据类型日期
Birth Date
19650101 2015-07-09
我怎样才能得到这样的结果
我想要这样的结果
Birth Date
1965-01-01 2015-07-09
其中出生是日期数据类型而不是小数 (12,4)
你可以使用这个:
-- 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
)。
要将数字 19650101
转换为日期,请使用
CONVERT(DATETIME, CAST(Birth AS VARCHAR(8)), 112)
要获取年数(精确到小数点后一位),您可以这样做:
ROUND(
DATEDIFF(day,
CONVERT(DATETIME, CAST(Birth AS VARCHAR(8)), 112),
[Date])/365.25
,1)
这并不准确,但应该足够接近一年的十分之一。
这是进行此转换的一种方法。
cast(cast(FLOOR(birth) as CHAR(8)) as DATE)
我觉得你不需要四舍五入。只需转换您的十进制值并输入“-”,如下所示:)
select left(birth,4) +'-' +
substring(convert(nvarchar,birth),5,2)+'-'+
substring(convert(nvarchar,birth),7,2)