关于查询数据库的问题

toma2008 2016-03-21 03:53:57
我制作一个网页,有个gridview的控件,控件按一定条件显示内容,比方按时间,如果目前时间在8:00到20:00之间,那么控件就显示昨天20:00到今天8:00之前的内容,更早之前的就不显示,如果目前时间在20:00到第二天8:00之前,那么控件就只显示前面8:00到20:00之前的内容,更早的内容就不显示

我想问的问题是:这个查询数据库的语句怎么写的呢?
...全文
461 26 打赏 收藏 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
toma2008 2016-03-24
  • 打赏
  • 举报
回复
谢谢楼上的,那个问题已经解决了 还有个小问题, 要插入一条信息到数据库,有一个列名是用户名,就把当前的登陆用户名写进去, 我怎么获得当前登陆的用户名了?
insus 2016-03-24
  • 打赏
  • 举报
回复
引用 19 楼 toma2008 的回复:
[quote=引用 18 楼 insus 的回复:] 不我弄得很复杂。 只需判断当前时间,如果当前时间大于8:00那就是显示昨天20点至今天的8点之间的数据。 如果当前时间大于20:00,那就显示今天8点至20点之间的数据。
有代码不[/quote] 试写了一下,参考:

DECLARE @0 DATETIME = CAST(CAST(CURRENT_TIMESTAMP AS DATE) AS DATETIME)
DECLARE @currTime DATETIME = CURRENT_TIMESTAMP

DECLARE @8 DATETIME = DATEADD(HOUR,8,@0)
DECLARE @20 DATETIME = DATEADD(HOUR,20,@0)
DECLARE @l20 DATETIME  = DATEADD(HOUR,8,DATEADD(DAY,-1,@0))


IF @currTime > @8
	SELECT * FROM [tablexx] WHERE [RegDate] >= @l20 AND [RegDate] < @8

IF @currTime > @20
    SELECT * FROM [tablexx] WHERE [RegDate] >= @8 AND [RegDate] < @20
toma2008 2016-03-24
  • 打赏
  • 举报
回复
知道怎么弄了,先把时间赋值给box,再绑定到box,网页隐藏box,ok
toma2008 2016-03-24
  • 打赏
  • 举报
回复
我用的是vs2010平台,sql语句不用我们写那么多, 拖一个gridview的控件出来 选择数据源,点新建数据源 弹出配置数据源的窗口 选择要查询的表和列名 有一个条件选择where按钮,弹出添加where子句,的窗口 选择根据哪个列名判断选择条件 选择运算符,有大于等于小于 选择源,有control,cookie,form,profile,querystring,session,route 选完这些,还有参数属性 就是在这样的一个窗口选择配置,自动生成sql语句, 如果手动更改语句,就不能运行
insus 2016-03-24
  • 打赏
  • 举报
回复
引用 25 楼 toma2008 的回复:
谢谢楼上的,那个问题已经解决了 还有个小问题, 要插入一条信息到数据库,有一个列名是用户名,就把当前的登陆用户名写进去, 我怎么获得当前登陆的用户名了?
参考: http://www.cnblogs.com/insus/archive/2011/07/21/2112724.html
insus 2016-03-23
  • 打赏
  • 举报
回复
不我弄得很复杂。 只需判断当前时间,如果当前时间大于8:00那就是显示昨天20点至今天的8点之间的数据。 如果当前时间大于20:00,那就显示今天8点至20点之间的数据。
just59277 2016-03-23
  • 打赏
  • 举报
回复
引用 12 楼 toma2008 的回复:
[quote=引用 11 楼 xdashewan 的回复:] [quote=引用 10 楼 toma2008 的回复:] 这是搜索的时间段,select * from [表名] where createtime between starttime and endtime 这个语句在c#行不通 怎么回事
这语句是和c#没有关系,c#只是组合成一个sql字符串。你说的行不通是指什么[/quote] 变量,函数,都在类文件里面,cs那个文件 语句在网页文件里面,aspx那个文件, 提示starttime变量没定义[/quote] 定义了两个时间以后,要把你的参数拼接到sql语句里面去,你不会是直接在字符串里面写的starttime吧? sql="select * from [表名] where createtime between '"+starttime+'" and '"+endtime+"'";
toma2008 2016-03-23
  • 打赏
  • 举报
回复
引用 13 楼 xdashewan 的回复:
[quote=引用 12 楼 toma2008 的回复:] 提示starttime变量没定义
发你全代码吧[/quote] 代码没多少,一般网页就两个文件,aspx网页文件,cs类文件 变量,函数,定义在类文件里面 sql查询语句在网页文件里面 提示变量没定义
fei缘如水 2016-03-23
  • 打赏
  • 举报
回复
先在页面里判断下当前时间然后用sql来查询时间区间, 单sql里要做到你这样麻烦。
toma2008 2016-03-23
  • 打赏
  • 举报
回复
好像这些代码都是在配置数据源后生成的,
toma2008 2016-03-23
  • 打赏
  • 举报
回复
引用 18 楼 insus 的回复:
不我弄得很复杂。 只需判断当前时间,如果当前时间大于8:00那就是显示昨天20点至今天的8点之间的数据。 如果当前时间大于20:00,那就显示今天8点至20点之间的数据。
有代码不
toma2008 2016-03-22
  • 打赏
  • 举报
回复
引用 6 楼 xdashewan 的回复:
[quote=引用 5 楼 toma2008 的回复:] 我就是问sql语句的问题,你这个回复是不是有损你版主称号
你的问题太基础,但凭学过一点sql,这都不是问题,如果你没学过还是建议去学习下[/quote] 如果是c++ sql语句的话,很容易就能写出来 但是c#有些不一样,变化比较大, DateTime starttime,endtime; protected void gettime() {DateTime nowtime=DateTime.Now; DateTime temptime=DateTime.Parse(String.Format(DateTime.Now.ToShortDateString().ToString()+“ 08:00:00”)); if(temptime>nowtime) {starttime=temp.AddDays(-1); endtime=temptime;} else {starttime=temptime; endtime=temptime.AddDats(1);} } 这是搜索的时间段,select * from [表名] where createtime between starttime and endtime 这个语句在c#行不通 怎么回事
qbilbo 2016-03-22
  • 打赏
  • 举报
回复
前面错了... select .... from .... where (mytime>= convert(varchar(10),dateadd(day,-1,getdate()),101) + ' 20:00:00' and mytime< convert(varchar(10),getdate(),101) + ' 08:00:00' and datename(hour,getdate()) >= 8 and datename(hour,getdate()) <20) or (mytime>= convert(varchar(10),getdate(),101) + ' 08:00:00' and mytime< convert(varchar(10),getdate(),101) + ' 20:00:00' and datename(hour,getdate()) >= 20) or(mytime>= convert(varchar(10),dateadd(day,-1,getdate()),101) + ' 08:00:00' and mytime< convert(varchar(10),dateadd(day,-1,getdate()),101) + ' 20:00:00' and datename(hour,getdate()) < 8)
qbilbo 2016-03-22
  • 打赏
  • 举报
回复
假设时间字段是 mytime 如果是Sql Server select ... from ... where (mytime>= convert(varchar(10),dateadd(day,-1,getdate()),101) + ' 20:00:00' and mytime< convert(varchar(10),getdate(),101) + ' 08:00:00' and datename(hour,getdate()) > 7 and datename(hour,getdate()) < 21) or (mytime>= convert(varchar(10),getdate(),101) + ' 08:00:00' and mytime< convert(varchar(10),getdate(),101) + ' 20:00:00' and (datename(hour,getdate()) < 8 or datename(hour,getdate()) > 20)) 这样写很麻烦,最好还是参数化处理或用存储过程。
xdashewan 2016-03-22
  • 打赏
  • 举报
回复
引用 5 楼 toma2008 的回复:
我就是问sql语句的问题,你这个回复是不是有损你版主称号
你的问题太基础,但凭学过一点sql,这都不是问题,如果你没学过还是建议去学习下
toma2008 2016-03-22
  • 打赏
  • 举报
回复
引用 3 楼 FoxDave 的回复:
就是一个sql语句的事
我就是问sql语句的问题,你这个回复是不是有损你版主称号
正怒月神 版主 2016-03-22
  • 打赏
  • 举报
回复
不是太明白这个条件的意思。 不过说白了也就是sql语句
Justin-Liu 2016-03-22
  • 打赏
  • 举报
回复
就是一个sql语句的事
Pro_monkey 2016-03-22
  • 打赏
  • 举报
回复
在存储过程中 对时间做一个限制
万玩完顽完 2016-03-22
  • 打赏
  • 举报
回复
大于小于时间问题 ,都可以解决的啊。
加载更多回复(5)

62,270

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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