高分 sql语句,求两个日期之间的数据~~
问题:我想实现生日查询,如1月1日到5月5日之间过生日的人。1.这种月份间的查询,在数据库中应该如何让设置字段,是年月日都要有,还是只需要日月就可以了。2.数据库的字段应...
问题:我想实现生日查询,如1月1日到5月5日之间过生日的人。
1.这种月份间的查询,在数据库中应该如何让设置字段,是年月日都要有,还是只需要日月就可以了。
2.数据库的字段应该用什么类型,以什么格式存放比较好。
3.这种查询语句应该怎么写。
在网上看了很多种方法,没有我需要的,期待高人指教。
啊,不好意思,sqlserver2005,谢谢
注意一下啊,不光是1月1日至5月5日之间,还有加入是9月1日至3月1日之间这种的,请高手帮帮忙。
tj_angela的可以实现,谢谢,能不能吧把另一半也实现了,不胜感激。
这是答案 帮助后来人。。
select * from tablename where
substring(CONVERT(varchar(12),date型日期字段,112),5,4) <= '0331' or substring(CONVERT(varchar(12),date型日期字段,112),5,4) >='0501' 展开
1.这种月份间的查询,在数据库中应该如何让设置字段,是年月日都要有,还是只需要日月就可以了。
2.数据库的字段应该用什么类型,以什么格式存放比较好。
3.这种查询语句应该怎么写。
在网上看了很多种方法,没有我需要的,期待高人指教。
啊,不好意思,sqlserver2005,谢谢
注意一下啊,不光是1月1日至5月5日之间,还有加入是9月1日至3月1日之间这种的,请高手帮帮忙。
tj_angela的可以实现,谢谢,能不能吧把另一半也实现了,不胜感激。
这是答案 帮助后来人。。
select * from tablename where
substring(CONVERT(varchar(12),date型日期字段,112),5,4) <= '0331' or substring(CONVERT(varchar(12),date型日期字段,112),5,4) >='0501' 展开
6个回答
展开全部
我常用informix数据库,应该和sqlserver差别不大,月日即可,我用日期时一般就是varchar,月日之间用符号分隔,一般都用‘-’
比如你的是person表,字段有'人'
varchar(10),'生日'
varchar(5)
张三
01-02
李四
05-04
王五
06-01
select
人,生日
from
person
where
'01-01'<=生日
and
生日<='05-05'
直接大于小于就行了,不会有遗漏的。
附:
在informix中可以实现直接日期想减,
to_date('2008-10-10','%Y-%m-%d')-to_date('2008-09-27','%Y-%m-%d')
就行了,在sql中不知道可不可以,你再查下。
比如你的是person表,字段有'人'
varchar(10),'生日'
varchar(5)
张三
01-02
李四
05-04
王五
06-01
select
人,生日
from
person
where
'01-01'<=生日
and
生日<='05-05'
直接大于小于就行了,不会有遗漏的。
附:
在informix中可以实现直接日期想减,
to_date('2008-10-10','%Y-%m-%d')-to_date('2008-09-27','%Y-%m-%d')
就行了,在sql中不知道可不可以,你再查下。
展开全部
select *
from tablename
where
substring(CONVERT(varchar(12),这里是你的date型日期字段,112),5,4) between '0101' and '0505'
from tablename
where
substring(CONVERT(varchar(12),这里是你的date型日期字段,112),5,4) between '0101' and '0505'
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不考虑年份的话就得考虑对生日的月和日做变换,以sqlserver2000为例
select * from person where (Month(birthday) * 100 + Day(birthday)) >= 101 and (Month(birthday) * 100 + Day(birthday)) <= 505
其中(Month(birthday) * 100 + Day(birthday))就是将日期型的生日字段转换成了一个整型再进行比较。其他数据库也有类似的取年月日的函数。
数据库字段我是习惯使用日期型,但做上面这种查询的时候效率可能会低一点。
select * from person where (Month(birthday) * 100 + Day(birthday)) >= 101 and (Month(birthday) * 100 + Day(birthday)) <= 505
其中(Month(birthday) * 100 + Day(birthday))就是将日期型的生日字段转换成了一个整型再进行比较。其他数据库也有类似的取年月日的函数。
数据库字段我是习惯使用日期型,但做上面这种查询的时候效率可能会低一点。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我常用informix数据库,应该和sqlserver差别不大,月日即可,我用日期时一般就是varchar,月日之间用符号分隔,一般都用‘-’
比如你的是person表,字段有'人' varchar(10),'生日' varchar(5)
张三 01-02
李四 05-04
王五 06-01
select 人,生日 from person
where '01-01'<=生日 and 生日<='05-05'
直接大于小于就行了,不会有遗漏的。
附:
在informix中可以实现直接日期想减,
to_date('2008-10-10','%Y-%m-%d')-to_date('2008-09-27','%Y-%m-%d')
就行了,在sql中不知道可不可以,你再查下。
比如你的是person表,字段有'人' varchar(10),'生日' varchar(5)
张三 01-02
李四 05-04
王五 06-01
select 人,生日 from person
where '01-01'<=生日 and 生日<='05-05'
直接大于小于就行了,不会有遗漏的。
附:
在informix中可以实现直接日期想减,
to_date('2008-10-10','%Y-%m-%d')-to_date('2008-09-27','%Y-%m-%d')
就行了,在sql中不知道可不可以,你再查下。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
最简单的方法就是用char(4)来保存生日。
select student_name
from students
where student_birthday between '0101' and '0505'
order by student_birthday
也可以用数值型:)
select student_name
from students
where student_birthday between 101 and 505
order by student_birthday
当然也可以用日期型
select student_name
from students
where student_birthday between '0101' and '0505'
order by student_birthday
也可以用数值型:)
select student_name
from students
where student_birthday between 101 and 505
order by student_birthday
当然也可以用日期型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询