簡體   English   中英

在SQL Server中將INT列轉換為Datetime

[英]Convert INT column to Datetime in SQL Server

我有一個int列,它存儲的年份類似於2017

如何將其轉換為將結果保存到另一個實際的datetime列(如2017-01-01

DATEFROMPARTS是一種新的SQL Server函數(來自SQL Server 2012),它允許使用其部分(年,月,日)構建日期值。

看看MS Docs的DATEFROMPARTS

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

使用功能DATEFROMPARTS

select datefromparts(colname,1,1)
from tablename

嘗試使用DATEFROMPARTS

UPDATE table SET coldatetime= datefromparts(colname,1,1) WHERE colname = 2017

這是復雜的。 首先,將列轉換為varchar()

alter table t alter column col varchar(255);

當您這樣做時,該整數將被轉換為varchar()

接下來,將“ 0101”附加到值:

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的早期版本中使用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM