我是所有这一切的新手所以我遇到了一些问题(我只使用了几次SQL服务器)
我创建了新表,我从另一个服务器上的另一个数据库中的表中导出数据。一切都很好。但是,在新表中,我需要使用数据类型int
(YYYYMMDD),而后者则作为日期时间存储在原始表中。我想我可以使用临时表来导出日期时间格式化日期,然后将它们转换为输入到日期表中,但我现在有点卡住了。
这是我到目前为止所做的事情(包含错误)
DECLARE @count int;
SET @count = 0;
DECLARE @NUMOFROWS int;
SET @NUMOFROWS = ( SELECT COUNT(VENTES_CODE_ID) FROM ventes );
WHILE ( @count < @NUMOFROWS )
BEGIN
DECLARE @Date datetime;
SET @Date = ( SELECT TEMP FROM ventes WHERE row_number () = @count );
SELECT into ID_DATE_IDDate AsInteger (
SELECT COUNT(*) FROM ventese
WHERE ID_DATE_is NOT LIKE NULL AS rownumber
) = CAST( CONVERT( varchar, @Date, 112 ) AS INT );
@count++;
END
非常感谢!
答案 0 :(得分:3)
有没有理由你不能同时做整套:
INSERT INTO DestinationTable (intcolumn)
SELECT CAST(CONVERT(varchar(8), datecolumn, 112) AS INT)
FROM SourceTable
答案 1 :(得分:0)
你可以尝试一些稍微简单的东西;创建一个转换两种方式的函数,以便您可以随意转换,并用于转换。
CREATE FUNCTION DATE2INT ( @date AS DATE ) RETURNS INT AS BEGIN
RETURN CAST(CONVERT(VARCHAR(32), @date, 112) AS INT);
END;
GO
CREATE FUNCTION INT2DATE ( @date AS INT ) RETURNS DATE AS BEGIN
RETURN CONVERT(DATE, CAST(@date AS VARCHAR(32)), 112);
END;
GO
SELECT DBO.DATE2INT(GETDATE());
> 20120312
SELECT DBO.INT2DATE(20120312);
> 2012-03-12
-- Add a month to your integer date
SELECT DBO.DATE2INT(DATEADD(MONTH, 1, DBO.INT2DATE(20121212)));
> 20130112