select b.* from DutyInfo b
,
(select MAX(a.DutyDate) DutyDate,sign as sign
from DutyInfo a group by a.sign) a
where b.DutyDate=a.DutyDate and b.DutyDate<'20130601'
order by b.DutyDate以下是我数据库的数据,但是执行 不显示数据 去掉 and b.DutyDate<'20130601' 这个条件就有显示
是不是条件加错了 如果加错了该怎么加呢?
20130514 星期二 张三 1
20130515 星期三 李四 1
20130516 星期四 王五 1
20130517 星期五 赵六 1
20130518 星期六 张三 2
20130519 星期日 李四 2
20130520 星期一 张三 1
20130521 星期二 李四 1
20130522 星期三 王五 1
20130523 星期四 赵六 1
20130524 星期五 张三 1
20130525 星期六 王五 2
20130526 星期日 赵六 2
20130527 星期一 李四 1
20130528 星期二 王五 1
20130529 星期三 赵六 1
20130530 星期四 张三 1
20130531 星期五 李四 1SQL数据库select
看看前后是否有其它特殊的字符
导致的
DECLARE @date int
SET @date ='20130601'
select b.* from DutyInfo b
,
(select MAX(a.DutyDate) DutyDate,sign as sign
from DutyInfo a group by a.sign) a
where b.DutyDate=a.DutyDate and b.DutyDate<@date
order by b.DutyDate如果我这样写呢?
DECLARE @date int
SET @date ='20130601'
select b.* from DutyInfo b
,
(select MAX(a.DutyDate) DutyDate,sign as sign
from DutyInfo a group by a.sign) a
where b.DutyDate=a.DutyDate and b.DutyDate<@date
order by b.DutyDate如果我这样写呢?虽然你定义了int,但是你赋值的时候使用了一个字符型,所以这个值还是会变成字符型
就比如我的数据是20130514-20130531 如果我把条件设成and b.DutyDate<'20130601' 则一切正常
但是只要把条件设置成20130514-20130531中间的某个数就不显示数据了
当时为了循环的时候方便i++ 后来发现其实也可以用dt.adddays(1)来的···呵呵 我再建个数据库试一试用datetime类型的看看 谢谢你啦
当时为了循环的时候方便i++ 后来发现其实也可以用dt.adddays(1)来的···呵呵 我再建个数据库试一试用datetime类型的看看 谢谢你啦如果是i++,那你传入的参数也不应该是'20130514'这样的格式啊?SQLServer 直接有dateadd()这个的
当时为了循环的时候方便i++ 后来发现其实也可以用dt.adddays(1)来的···呵呵 我再建个数据库试一试用datetime类型的看看 谢谢你啦如果是i++,那你传入的参数也不应该是'20130514'这样的格式啊?SQLServer 直接有dateadd()这个的我是在程序里面把datetime先转换string在转换int 然后就直接++了 当时就图这个方便
我就是平时看看书然后自己写写玩玩,有时就逛逛论坛, 所以很多简单的方法不会用 只会用最原始和最笨的 呵呵