急!!!!数据库查询问题,有关between的

sinlinring 2004-04-15 09:16:33
我想查询从某年某月某日到某年某月某日的记录,数据表中date这一列的数据类型是时间日期,我用的是access。
一开始用这样的语句:Select * From Login Where UserName = '"+UserNameText.Text+"' And (LogDate Between 'startTime' And 'endTime')结果说数据类型不匹配,请问我应该怎样写呢
...全文
203 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinlinring 2004-04-21
  • 打赏
  • 举报
回复
多谢大家的热心帮助,分不够散了,汗......
sinlinring 2004-04-20
  • 打赏
  • 举报
回复
哦,谢谢,我试试
greatqn 2004-04-20
  • 打赏
  • 举报
回复
to sinlinring(琳) :
还是要用的。 你的startTime和endTime 应该是变量吧。
sql语句是字符串型吧。
最后要执行的sql语句中的内容要求是 : "Between #2/1/2004# And #5/2/2004#"
程序中写就变成: "Between #" + startTime + "# And #" + endTime + "#"
sinlinring 2004-04-20
  • 打赏
  • 举报
回复
请问一剑:
WHERE UserName = '"+UserNameText.Text+"' And (LogDate Between #startTime# And #endTime#)
这里的startTime和endTime就不用‘“++”’来引用了么
李洪喜 2004-04-20
  • 打赏
  • 举报
回复
BETWEEN '"+ startTime +"' AND '"+ endTime +"'"
不用这个了,麻烦。
改一下。
datediff(dd,LogDate ,starttime)>=0 and datediff(dd,LogDate ,endTime )<=0
这样做,对于日期处理,一般不会出错。

如果再解决不了,MSN上问我:
lhx1977@hotmail.com
gongfangksjs 2004-04-19
  • 打赏
  • 举报
回复
看看你机器日期设置是否正确
rouqu 2004-04-19
  • 打赏
  • 举报
回复
--------------------
BETWEEN CAST('"+ startTime.ToString() +"' AS DATETIME) AND CAST('"+ endTime.ToString() +"' AS DATETIME" 这样是什么意思啊,我试了一下,出错,而且好像是内存出错,怪吓人的
---between XX and XX (XX若只能是字符串类型 怎么往datetime上面转?)

SELECT * FROM Login WHERE UserName = '"+UserNameText.Text+"' AND
LogDate BETWEEN '"+ startTime.ToString() +"' AND '"+ endTime.ToString() +"'
sinlinring 2004-04-19
  • 打赏
  • 举报
回复
BETWEEN CAST('"+ startTime.ToString() +"' AS DATETIME) AND CAST('"+ endTime.ToString() +"' AS DATETIME" 这样是什么意思啊,我试了一下,出错,而且好像是内存出错,怪吓人的。

还有EdwarddotNet(Edward.Net):作为字符串也可以用between语句来比较么,我试了一下,运行时不出错了,但是什么都查不出来,结果集老是空的
sinlinring 2004-04-19
  • 打赏
  • 举报
回复
哎呀,不好意思,呵呵
greatqn 2004-04-19
  • 打赏
  • 举报
回复
access的sql 语句中要求 日期类型 用 #号括起来的。
它用的不是标准 t-sql 语法。
hehe. 还是我对了吧。
sinlinring 2004-04-19
  • 打赏
  • 举报
回复
是因为access里的时间日期类型是#5/2/2004#的么?
greatqn 2004-04-19
  • 打赏
  • 举报
回复
语句:Select * From Login Where UserName = '"+UserNameText.Text+"' And (LogDate Between 'startTime' And 'endTime')结果说数据类型不匹配,请问我应该怎样写呢

这样不行么?

SELECT * FROM Login
WHERE UserName = '"+UserNameText.Text+"' And (LogDate Between #startTime# And #endTime#)

eg:Between #2/1/2004# And #5/2/2004#
EdwarddotNet 2004-04-19
  • 打赏
  • 举报
回复
你的LogDate的日期格式是不是yyyy-MM-dd还是yyyy-MM-dd hh:mm:ss?这会对结果集有影响
你必须两个(数据库中的数据,startTime)统一一个格式,或者都选yyyy-MM-dd或者都选yyyy-MM-dd hh:mm:ss
eTopFancy 2004-04-19
  • 打赏
  • 举报
回复
字符串和日期类型均可以使用between比较
sinlinring 2004-04-19
  • 打赏
  • 举报
回复
对了,我在access中对LogDate这一列定义了默认值,用表达式生成器里的日期/时间类型的Date()函数,不知道这个函数是不是用错了?
sinlinring 2004-04-19
  • 打赏
  • 举报
回复
哦,谢谢!我还是想问一句,到底是字符串类型可以进行between比较,还是时间日期类型可以进行between比较?
taosihai1only 2004-04-19
  • 打赏
  • 举报
回复
cast 不能用于日期类型的转换
convert 比cast 多这样一个功能
taosihai1only 2004-04-19
  • 打赏
  • 举报
回复
日期格式设置(地区选项)
sinlinring 2004-04-19
  • 打赏
  • 举报
回复
什么机器日期啊,不明白
sinlinring 2004-04-18
  • 打赏
  • 举报
回复
回复人: greatqn(一剑)
对不住,access好像不是这样,呵呵
加载更多回复(13)

111,119

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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