例如有一个表 t1 ,格式如下,thedate是生产日期,假设每种物品保质期都是 3个月,例如雪莲保质期应该是一直到 2012-06-08.
如果任意输入一段时间范围,例如我现在输入 4.27-5.26,那么我希望能够列出当前在 4.27-5.26所有尚在保质期之内的物品清单,sql 应该怎么写?select * from t1 typeName theDate
哈密瓜 2012-03-01
雪莲 2012-03-08
西瓜 2012-03-13
如果任意输入一段时间范围,例如我现在输入 4.27-5.26,那么我希望能够列出当前在 4.27-5.26所有尚在保质期之内的物品清单,sql 应该怎么写?select * from t1 typeName theDate
哈密瓜 2012-03-01
雪莲 2012-03-08
西瓜 2012-03-13
解决方案 »
- 求高人指点--XML中出现:该文件不具有良好格式:期望%
- 求一日期表
- 急:难道TEXT类型数据只能用存储过程来读写吗?up有分!!!
- acc数据库迁移到sql数据库出错,怎么解决
- 哪位大哥帮我解说一谓词"like"的各种用法。
- 我不小心通过网络将MDF和LDF文件删除了,大概有2G多,用什么软件可以恢复
- 请教登陆sql server的问题
- 大侠指点---我想将图像数据放入SQL2000
- 怎么在临时表第一行加上其字段名?
- 【问题】对于MS-SQL,如何高效地从检索结果中抽取指定的start_row和end_row之间的数据?
- 请教提取指定时间范围记录的sql语句
- 通过触发器实现数据库同步问题(sqlserver2000与sqlserver2005)
--> 测试数据:[test]
if object_id('[test]') is not null drop table [test]
create table [test]([typeName] varchar(6),[theDate] datetime)
insert [test]
select '哈密瓜','2012-03-01' union all
select '雪莲','2012-03-08' union all
select '西瓜','2012-03-13'
select [typeName],[theDate] from(
select *,
DATEADD(mm,3,[theDate]) as enddate from test)t
where enddate>='2012-05-26' and [theDate] between '2012-04-27' and '2012-05-26'
BEGIN
DROP TABLE tba
END
GO
CREATE TABLE tba
(
typeName VARCHAR(100),
theDate VARCHAR(100)
)INSERT INTO tba
SELECT '哈密瓜', '2012-03-01' UNION
SELECT '雪莲', '2012-03-08' UNION
SELECT '西瓜', '2012-03-13' UNION
SELECT '美人瓜','2012-4-25'--4.27-5.26SELECT * FROM tba
WHERE DATEADD(MONTH,3,theDate) > '2012-04-27'typeName theDate
哈密瓜 2012-03-01
美人瓜 2012-4-25
西瓜 2012-03-13
雪莲 2012-03-08
如果生产日期可能大于5月26号的时候,后面的条件才有作用。SELECT * FROM tba
WHERE DATEADD(MONTH,3,theDate) > '2012-04-27' AND theDate <= '2012-05-26'