datetime怎么做月份查询

kvkensinb 2010-10-26 10:11:47
我表的数据如下:
日期 销售量
2010-7-13 1000
2010-8-3 1300
2010-8-26 800
2010-10-19 2300
用户会输入月份范围,如:2010-7到2010-9,SELECT 日期,销售量
FROM table where (日期>='2010-7' and 日期<='2010-9')但由于查询时候会提示从字符串转换为 datetime 时发生语法错误。请高手帮帮忙,谢谢


...全文
222 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
coleling 2010-10-26
  • 打赏
  • 举报
回复

--设用户输入的查询参数为@beginmonth和@endmonth,类型为字符串,格式为"2010-7"
DECLARE @sdate datetime, @edate datetime
SET @sdate = cast(@beginmonth+'-1' as datetime)
SET @edate = dateadd(d,-1,dateadd(m,1,cast(@endmonth+'-1' as datetime)))

查询的时候用FROM table where (日期>=@sdate and 日期<=@edate)
zhangsuyunpk521 2010-10-26
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 fpzgm 的回复:]
SQL code

--直接
cast(日期 as date) between '2010-7-1' and '2010-9-30'
[/Quote]
up
fpzgm 2010-10-26
  • 打赏
  • 举报
回复

--直接
cast(日期 as date) between '2010-7-1' and '2010-9-30'
chuanzhang5687 2010-10-26
  • 打赏
  • 举报
回复
create table a
(
time1 datetime,
num varchar(10)
)
insert into a values('2010-7-13','1000')
insert into a values('2010-8-3','1300')
insert into a values('2010-8-26','800')
insert into a values('2010-10-19','2300')
select * from a
select * from a where time1 between '2010-7-1' and '2010-9-30'
dawugui 2010-10-26
  • 打赏
  • 举报
回复
select * from tb where convert(varchar(7),日期,120) between '2010-07' and '2010-09'
FlySQL 2010-10-26
  • 打赏
  • 举报
回复
SELECT 日期,销售量  
FROM table where convert(varchar(7),日期,120)>='2010-07' and convert(varchar(7),日期,120)<='2010-09'
sql_cctv 2010-10-26
  • 打赏
  • 举报
回复
where 日期>='2010-7-1' and 日期<'2010-10-1'
FlySQL 2010-10-26
  • 打赏
  • 举报
回复
SELECT 日期,销售量  
FROM table where convert(varchar(7),日期,120)>='2010-07' and convert(varchar(7),日期,120<='2010-09'
lcqtgb 2010-10-26
  • 打赏
  • 举报
回复

select 1 from tb where datepart(yyyy,dates) between '2009' and '2010'
xuam 2010-10-26
  • 打赏
  • 举报
回复
convert (char(7),日期,120)

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧