sql问题统计将要到期(6个月)商品。请求达人帮忙20分

SQL中 字段名称为YXQX,它表达的是商品有效期限(字符型,例如:20100102《2010年1月2日》),该字段在SPKF中。
请问如何表示出半年内将要到期的商品。
请补充说明语句对应的涵义,我不明白。还有一定要看清楚问题 意思是要还有最多6个月将要到期的商品,不是刚好6个月的商品

楼主没有详细的说明 使用的是什么数据库.
那我只有慢慢解释了:

第一步,首先要把那个 字符类型的数据, 转换为日期类型:
Oracle 使用
TO_DATE(YXQX, 'YYYYMMDD')
SQL SERVER 使用
CONVERT(datetime, YXQX, 112)
MYSQL 使用
STR_TO_DATE(YXQX, '%Y%m%d')

第二步,如何表示出半年内将要到期的商品。
也就是 这个 转换后的日期, 要大于今天, 小于半年后
需要使用2个函数, 一个是今天, 一个是 半年后(也就是 6个月以后)

今天的函数:
Oracle 使用
SYSDATE
SQL Server 使用
GETDATE()
MySQL 使用
CURRENT_DATE()

今天+6个月的 操作
Oracle 使用
ADD_MONTHS(sysdate, 6)
SQL Server 使用
DATEADD(mm, 6, GETDATE() )
MySQL 使用
DATE_ADD( CURRENT_DATE(), INTERVAL 6 MONTH)

最后的写法就是:

Oracle:
TO_DATE(YXQX, 'YYYYMMDD') > SYSDATE
AND TO_DATE(YXQX, 'YYYYMMDD') < ADD_MONTHS(sysdate, 6)

SQL SERVER
CONVERT(datetime, YXQX, 112) > GETDATE()
AND CONVERT(datetime, YXQX, 112) < DATEADD(mm, 6, GETDATE() )

MYSQL
STR_TO_DATE(YXQX, '%Y%m%d') > CURRENT_DATE()
AND STR_TO_DATE(YXQX, '%Y%m%d') < DATE_ADD( CURRENT_DATE(), INTERVAL 6 MONTH)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-15
goods_table_name: 你的商品的表名
to_date(YXQX,'YYYYMMDD'):将YXQX转化为DATE类型

select * from goods_table_name where to_date(YXQX,'YYYYMMDD') <= add_months(sysdate, 6);
第2个回答  2010-11-15
SQL语句如下:
select * from 商品表 where
DATEDIFF(M,CONVERT(datetime,[YXQX],120),GETDATE())<=6
第3个回答  2010-11-15
select * from 商品表 where cast (YXQX as datetime) <= dateadd(month, 6, getdate())