Sql数据类型转换

时间:2011-05-10 06:26:55

标签: sql

我们需要将一个列,即数据类型datetime的Start_Date更改为bigint。 对于现有数据,我们有像“2010-01-01 00:00:00”这样的记录,这些记录应该转换为bigint,并且应该返回像'20100101000000'这样的值。 我尝试使用转换和转换fn,但我没有得到欲望输出。 任何人都可以帮我解决这个问题。

3 个答案:

答案 0 :(得分:1)

第一个convert日期时间到varchar。

然后使用空字符“

为{ - 3}做replace

答案 1 :(得分:1)

希望这会有所帮助

    SELECT  DATENAME(year, Datetime_Colum)+''+
            SUBSTRING( CAST(CONVERT(DATE,Datetime_Colum,101)AS VARCHAR(8)),6,2)+''+
            DATENAME(DAY, Datetime_Colum)+''+
            DATENAME(hour, Datetime_Colum)+''+
            DATENAME(minute, Datetime_Colum)+''+
            DATENAME(second, Datetime_Colum)
    FROM    [dbo].[Table]

- // =========================================== ========================

功能:

CREATE FUNCTION udf_Convert_Datetime_To_INT 
(
    @DATETIME DATETIME
)

RETURNS BIGINT
AS
BEGIN

DECLARE @Result BIGINT

SELECT @Result =   CAST(( DATENAME(YEAR,@DATETIME) +''+
                    SUBSTRING( CAST(CONVERT(DATE,GETDATE(),101)AS VARCHAR(8)),6,2)+''+
                    DATENAME(DAY,@DATETIME)+''+
                    DATENAME(hour, @DATETIME)+''+
                    DATENAME(minute, @DATETIME)+''+
                    DATENAME(second, @DATETIME)) AS BIGINT)
RETURN @Result

END
GO

PRINT DBO.udf_Convert_Datetime_To_INT (GETDATE())

结果:20110511152843

答案 2 :(得分:0)

update Table_1 set xnew=REPLACE(REPLACE(REPLACE (CONVERT(VARCHAR,x,20) , '-' , '' ),':',''),' ','')

添加新字段xnew varchar(50),然后您可以将其转换为bigint .. x是你的日期时间字段..