如何删除此表中的日期?

mah*_*naz 5 sql sql-server date sql-server-2008

我有这样的表

create table tbl_1(
  year int,
  month int, 
 day int
)

insert into tbl_1 values(2009,  11, 30)
insert into tbl_1 values(2010,   3,  4)
insert into tbl_1 values(2011,   5, 13)
insert into tbl_1 values(20011, 12, 24)
Run Code Online (Sandbox Code Playgroud)

我想删除从2009-11-30到2011-5-13的日期,但我不能,因为所有列都是int,我不能使用此查询:

delete from tbl_1 
 where year >=2009 
   and year<=2011 
   and month >=11 
   and month <=5 
   and day >=30 
   and day <=13
Run Code Online (Sandbox Code Playgroud)

因为:1 <月<12和1 <日<30

我知道这是一个可怕的错误.

我有很多表使用这种方式保存日期,请帮助我,我没有时间删除并重新创建所有这些.

Mar*_*ers 7

你可以这样做:

DELETE FROM tbl_1 
WHERE (year * 10000 + month * 100 + day) BETWEEN 20091130 AND 20110513
Run Code Online (Sandbox Code Playgroud)

我没有测试过这个.我建议先在测试系统上测试它,然后再在生产数据上运行它,这样就不会意外删除错误的数据.