T-SQL 如何从日期时间列创建一个新列作为 INT 为 YYMM 或 YYYYMM

Mic*_*ael 0 sql-server-2012

这是创建新列并保留旧日期时间的最简单方法?使用格式?

来自日期时间列“2018-05-15 09:45:00.000”的结果如 201805、201806 或 1805、1806 等

ype*_*eᵀᴹ 6

您可以添加计算列。例子:

create table docs
( doc_id int not null primary key,
  dt datetime not null
) ;
Run Code Online (Sandbox Code Playgroud)
?
insert into docs (doc_id, dt)
values
(1, '2000-01-01 00:00:00'),
(2, '2001-05-12 12:30:00'),
(3, '2007-07-07 16:45:00'),
(4, '2018-01-01 12:00:00'),
(5, '2018-05-15 15:50:00') ;
Run Code Online (Sandbox Code Playgroud)
5 行受影响
select * from docs;
Run Code Online (Sandbox Code Playgroud)
doc_id | dt                 
-----: | :------------------
     1 | 01/01/2000 00:00:00
     2 | 12/05/2001 12:30:00
     3 | 07/07/2007 16:45:00
     4 | 01/01/2018 12:00:00
     5 | 15/05/2018 15:50:00
alter table docs
add year_month as year(dt) * 100 + month(dt) ;
Run Code Online (Sandbox Code Playgroud)
select * from docs;
Run Code Online (Sandbox Code Playgroud)
doc_id | dt | 年_月
-----: | :------------------ | ---------:
     1 | 01/01/2000 00:00:00 | 200001
     2 | 12/05/2001 12:30:00 | 200105
     3 | 07/07/2007 16:45:00 | 200707
     4 | 01/01/2018 12:00:00 | 201801
     5 | 15/05/2018 15:50:00 | 201805

db<>在这里摆弄