怀具了,查询两个日期间的数据问题。。。

mjfei 2010-05-26 11:17:22
数据库中用的类型为 smalldatetime 值:2010-5-25 17:57:00

然后我前台查询时两个时间段为:2010-5-24 至 2010-5-26 ,就是找不出数据,我想应该是格式的问题,该怎么弄呢?
...全文
139 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiedu414 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mjfei 的回复:]
引用 4 楼 xiedu414 的回复:

2010-5-24 这个格式绝对可以
找找别的问题 sql语句发来看看


晕了,不能查询当天的数据

比如:两个日期为:2010-5-25 就但不到这条记录
[/Quote] 当然 我只是说时间的格式没问题,默认的是这天的最后一秒
antiking 2010-05-26
  • 打赏
  • 举报
回复
select * from table where datetime>=convert(varchar(10),datebegin,120)
and datetime<=convert(varchar(10),dateend,120)
wuyi8808 2010-05-26
  • 打赏
  • 举报
回复
如果直接拼接SQL语句的话,也可以这样:
string date0 = "2010-5-24";
string date1 = "2010-5-26";
sql = string.Format("select * from t where d between '{0}' and '{1} 23:59:59'", date0, date1);

不过还是建议使用 SqlParameters,可以防止 SQL 注入。
wuyi8808 2010-05-26
  • 打赏
  • 举报
回复
string date0 = "2010-5-24";
string date1 = "2010-5-26";
cmd.CommandText = "select * from t where d between @date0 and @date1";
cmd.Parameters.Add("@date0", SqlDbType.SmallDateTime).Value = DateTime.Parse(date0);
cmd.Parameters.Add("@date1", SqlDbType.SmallDateTime).Value = DateTime.Parse(date1).AddDays(1).AddSeconds(-1);
wuyi8808 2010-05-26
  • 打赏
  • 举报
回复
date0 是什么类型,字符串吗?
string date0 = "2010-5-24";
string date1 = "2010-5-26";
cmd.CommandText = "select * from t where d between @date0 and @date1"; cmd.Parameters.Add("@date0", SqlDbType.SmallDateTime).Value = DateTime.Parse(date0);
cmd.Parameters.Add("@date1", SqlDbType.SmallDateTime).Value = DateTime.Parse(date1).AddDays(1).AddSeconds(-1);

mjfei 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyi8808 的回复:]

C# code
cmd.CommandText = "select * from t where d between @date0 and @date1";
cmd.Parameters.Add("@date0", SqlDbType.SmallDateTime).Value = new DateTime(2010,5,24);
cmd.Parameters.Add("@date1", Sql……
[/Quote]

可以将new DateTime(2010,5,24); 换成 new DateTime(date0)? 那后面加23:59:59怎么加呢? 谢谢

date0是传过来的值(2010-5-25)。以前sql时没用传参,麻烦说一下,谢谢
wuyi8808 2010-05-26
  • 打赏
  • 举报
回复
注意,第二个日期的时分秒应该为 23:59:59,例如:
select * from t where d between '2010-5-25' and '2010-5-26 23:59:59'
aluogang 2010-05-26
  • 打赏
  • 举报
回复
select * from table
where (convert(varchar(10),date,120) between
convert(varchar(10),cast(@date1 as datetime),120) and
convert(varchar(10),cast(@date2 as datetime),120))
mjfei 2010-05-26
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 xiedu414 的回复:]

2010-5-24 这个格式绝对可以
找找别的问题 sql语句发来看看
[/Quote]

晕了,不能查询当天的数据

比如:两个日期为:2010-5-25 就但不到这条记录
wuyi8808 2010-05-26
  • 打赏
  • 举报
回复
cmd.CommandText = "select * from t where d between @date0 and @date1";
cmd.Parameters.Add("@date0", SqlDbType.SmallDateTime).Value = new DateTime(2010,5,24);
cmd.Parameters.Add("@date1", SqlDbType.SmallDateTime).Value = new DateTime(2010,5,26,23,59,59);

lirenniao 2010-05-26
  • 打赏
  • 举报
回复
都统一格式看看
xiedu414 2010-05-26
  • 打赏
  • 举报
回复
2010-5-24 这个格式绝对可以
找找别的问题 sql语句发来看看
t20100504t 2010-05-26
  • 打赏
  • 举报
回复
顶个!
wuyi8808 2010-05-26
  • 打赏
  • 举报
回复
select * from t where d between @date0 and @date1
声明两个 SqlParatmer: @date0 和 @date1。
mjfei 2010-05-26
  • 打赏
  • 举报
回复
用Convert(varchar,smalldatetime,???)

mjfei 2010-05-26
  • 打赏
  • 举报
回复
谢谢各位了,通过大家的回答,我也弄清楚原因了。谢谢!
yan267 2010-05-26
  • 打赏
  • 举报
回复


SELECT * FROM TABLE WHERE DATEDIFF(d,datetime,'2010-5-26')>=0 AND DATEDIFF(d,'2010-5-24',datetime)>=0

audioer 2010-05-26
  • 打赏
  • 举报
回复
f
f
f
f
f
f
f
f
f
f
f
f

f

62,047

社区成员

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

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

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

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