在SQL Server中将INT列转换为Datetime

时间:2017-04-15 15:23:15

标签: sql sql-server

我有一个列int,它存储了2017之类的年份。

如何将其转换为将结果保存到另一个实际的日期时间列,例如2017-01-01

4 个答案:

答案 0 :(得分:2)

DATEFROMPARTS是一个新的SQL Server函数(来自SQL Server 2012),它允许使用其部分构建日期值:年,月,日。

在MS Docs上查看DATEFROMPARTS

UPDATE TableName
SET    <UpdColName> = DATEFROMPARTS(<IntColName>,1,1)
WHERE  <some condition>

答案 1 :(得分:1)

使用功能DATEFROMPARTS

select datefromparts(colname,1,1)
from tablename

答案 2 :(得分:1)

尝试使用=IF(COUNTIF(Teams!C:C, Goals!A2), "", "N/A")

DATEFROMPARTS

答案 3 :(得分:1)

这很复杂。首先,将列转换为varchar()

alter table t alter column col varchar(255);

执行此操作时,整数将转换为varchar()

接下来,追加&#39; 0101&#39;价值:

update t
    set col = col + '0101';

这将值放在'YYYYMMDD'格式中,SQL Server将其识别为日期。

最后,改为约会:

alter table t alter column col date;

如果您愿意,可以在表格中添加另一列作为日期,并分两步完成:

alter table t add column datecol date;

update t
    set datecol = concat(intcol, '0101');

虽然您也可以使用datefromparts(),但上述内容也适用于早期版本的SQL Server。