我有一张桌子
NUM | TDATE
1 | 200712
2 | 200708
3 | 200704
4 | 20081210
在哪里 mytable
创建为
mytable
(
num int,
tdate char(8) -- legacy
);
tdate 的格式是 YYYYMMDD.. 有时该date
部分是可选的。
所以像“200712”这样的日期可以解释为2007-12-01。
我想编写查询,以便我可以将tdate
其视为日期列并应用日期比较。
喜欢
select num, tdate from mytable where tdate
between '2007-12-31 00:00:00' and '2007-05-01 00:00:00'
到目前为止我试过这个
select num, tdate,
CAST(LEFT(tdate,6)
+ COALESCE(NULLIF(SUBSTRING(CAST(tdate AS VARCHAR(8)),7,8),''),'01') AS Date)
from mytable
如何使用上述转换后的日期(第 3 列)进行比较?(需要加入吗?)
还有更好的方法吗?
编辑:我现在无法控制表格方案..我们建议对数据库团队进行更改..现在必须坚持使用 char(8) 。