是否可以将浮点值转换为日期时间值?

时间:2015-09-02 01:57:07

标签: sql sql-server sql-server-2008

我的数据库中有一个Year列,其中包含多年float个值,例如(2014,2013,2012)。

是否可以将这些转换为DateTime?日期,月份和时间值无关紧要我只需要DateTime类型的另一个应用程序。

e.g。我可以将float 2014转换为DateTime 2014-01-01 00:00:00.000

的值

3 个答案:

答案 0 :(得分:2)

当然,只需转换为字符串并转换为日期时间:

select cast(cast(year as varchar(255)) + '0101' as datetime)

答案 1 :(得分:2)

是的,你可以!但是,您需要使用FLOORCEILING,然后将FLOAT列投放到INT

DECLARE @year FLOAT = 2014

SELECT DATEADD(YEAR, CAST(FLOOR(@year) AS INT) - 1900, 0)

或者您可以直接CASTFLOATINT添加到DECLARE @year FLOAT = 2014.1 SELECT DATEADD(YEAR, CAST(@year AS INT) - 1900, 0)

procedure MemCheck<T>(x, y : T);
var
    a, b : T;
    vals : array of T;
    c : T;
begin
    a := x;
    b := y;
    c := a;

    SetLength(vals, 4);
    vals[0] := a;
    vals[1] := a;
    vals[2] := a;
    vals[3] := a;

    c := T(vals[2]); //c := a ; workes fine 

    Check
    (
        CompareMem(@c, @y, SizeOf(T)),
        'Memory compare check'
    );


end;

答案 2 :(得分:1)

{{1}}