SQL中如何按日期时间查询?

godzhwei 2007-09-03 04:59:50

下面语句中m_Date和m_Date2为两个日期时间选取控件的变量,即CTime m_Date, CTime m_Date2.
数据库里的“日期时间”字段为Datetime类型,格式为"2008-8-28 10:15:00",编译程序没问题,在查询时出现错误:第一行,“”附近

有语法错误。
请各位帮我看看,应该怎么改?

CString sSQL="SELECT * FROM 遥测数据表 WHERE 日期时间 = #"+m_Date.Format("%Y-%m-%d")+"

"+m_Date2.Format("%H:%M:%S")+"#";

m_pRecordset2->Open(_variant_t(sSQL),_variant_t((IDispatch*)

m_pConnect,true),adOpenStatic,adLockOptimistic,adCmdText);

还有,能否用SQL语句把Datetime类型数据比如(2007-9-3 10:15:00)分成日期和时间两部分分别返回回

来?
...全文
1790 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
godzhwei 2007-09-08
  • 打赏
  • 举报
回复
楼上能否按照我的意思给个完整语句啊?我分不清咯...
CityBoy1984 2007-09-07
  • 打赏
  • 举报
回复
可以使用以下语句:
DATE:Convert(char(8),getdate(),111)
TIME: Convert(char(8),getdate(),114)
然后使用SQL Statement中加上条件就OK了!
godzhwei 2007-09-06
  • 打赏
  • 举报
回复
为什么好多人回答我的这个问题了,但总是没有确切答案咯...搞手们快出手啊!!!
Limpire 2007-09-05
  • 打赏
  • 举报
回复
还有就是,在SQL中,字符串类型时间要用单引号(')界定起来的(你这里好像是#),SQL是这样的:

SELECT * FROM 遥测数据表 WHERE 日期时间 = '2007-9-3 10:15:00'
Limpire 2007-09-05
  • 打赏
  • 举报
回复
请各位帮我看看,应该怎么改?

CString sSQL="SELECT * FROM 遥测数据表 WHERE 日期时间 = #"+m_Date.Format("%Y-%m-%d")+"

"+m_Date2.Format("%H:%M:%S")+"#";

-----------------------------

你把sSQL打印出来看看,日期部分和小时之间要有个空格,感觉你这里没有。
godzhwei 2007-09-05
  • 打赏
  • 举报
回复
sSQL.Format("SELECT * FROM 遥测数据表 WHERE (SELECTL CONVERT(VARCHAR(10),日期时间,120)日期 FROM 遥测数据表) %s #"+m_Date.Format("%Y-%m-%d")+"# AND (SELECTL RIGHT(CONVERT(VARCHAR(10),日期时间,120),8)时间 FROM 遥测数据表) %s #"+m_Date2.Format("%H:%M:%S")+"#",sEmblem,sEmblem);
我想通过两个日期时间选取控件的变量(时间和日期)来查询,以上语句编译通过,运行错误.这样写行不行的?
godzhwei 2007-09-05
  • 打赏
  • 举报
回复
sSQL="SELECT * FROM 遥测数据表 WHERE 日期时间 BETWEEN "+m_Date.Format("%Y-%m-%d")+" AND "+m_Date2.Format("%Y-%m-%d")+"";
我现在改成日期之间查询了,能编译但又出现错误.
Limpire 2007-09-05
  • 打赏
  • 举报
回复
把sSQL打印出来,下面的格式就对了,不是就调整代码,调到是:

SELECT * FROM 遥测数据表 WHERE 日期时间 = '2007-9-3 10:15:00'
godzhwei 2007-09-05
  • 打赏
  • 举报
回复
不是字符串类型时间啊,日期和时间之间有空格这样也还是错啊...
kk19840210 2007-09-03
  • 打赏
  • 举报
回复
declare @x datetime
select @x='2007-9-3 10:15:00'

select convert(varchar(20),@x,111)

select convert(varchar(20),@x,114

结果
——————
--------------------
2007/09/03

(所影响的行数为 1 行)


--------------------
10:15:00:000

(所影响的行数为 1 行)
dawugui 2007-09-03
  • 打赏
  • 举报
回复
还有,能否用SQL语句把Datetime类型数据比如(2007-9-3 10:15:00)分成日期和时间两部分分别返回回来?

select convert(varchar(10),字段,120) 日期 from tb
select right(convert(varchar(19),字段,120),8) 时间 from tb


2,209

社区成员

发帖
与我相关
我的任务
社区描述
其他数据库开发 其他数据库
社区管理员
  • 其他数据库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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