我正在尝试使用视图将两个SQL Server 2005数据库绑定在一起。源数据库将日期拆分为三个int字段。
RecordId | RecordYear | RecordMonth | RecordDay
-----------------------------------------------
000001 | 2001 | 1 | 26
000002 | 2002 | 3 | 10
我的目标是使用日期的单个日期时间字段创建一个更易于使用的视图,如下所示。
RecordId | RecordDate
---------------------
000001 | 2001/01/26
000002 | 2002/03/10
完成此任务的最有效方法是什么?
现在,我将每个列作为varchar进行转换,将它们与斜杠分隔符连接起来,然后将完整的varchar作为日期时间进行转换。我觉得有一种更有效的方式。
cast(
cast(RecordYear as varchar) + '/' +
cast(RecordMonth as varchar) + '/' +
cast(RecordDay as varchar)
as datetime
) as RecordDate
答案 0 :(得分:2)
不,不要转换为字符串,definitely not to varchar
without length。
尝试:
DECLARE @x TABLE
(
RecordId CHAR(6) PRIMARY KEY,
RecordYear INT,
RecordMonth INT,
RecordDay INT
);
INSERT @x VALUES('000001',2001,1,26);
INSERT @x VALUES('000002',2002,3,10);
SELECT
RecordId,
RecordDate = DATEADD(DAY, RecordDay-1,
DATEADD(MONTH, RecordMonth-1,
DATEADD(YEAR, RecordYear-1900, '19000101'
)))
FROM @x
ORDER BY RecordId;
结果:
RecordId RecordDate
-------- ----------
000001 2001-01-26
000002 2002-03-10