[英]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.