时间比较有问题的sql语句

jszikun 2007-05-16 11:24:01
select * where m_mydatetime > '2007-5-10 13:58:38'

我用上面的sql语句查数据库,奇怪为什么查出来的数据还包括了
2007-5-10 13:58:38 数据?
...全文
259 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
xr105 2007-05-17
  • 打赏
  • 举报
回复
select * where convert(varchar(19),m_mydatetime,120) > '2007-5-10 13:58:38'
x1234521 2007-05-17
  • 打赏
  • 举报
回复
建议用datediff来处理而不要弄 m_mydatetime > '2007-5-10 13:58:38:999'这样的格式
机制不同。
x1234521 2007-05-16
  • 打赏
  • 举报
回复
类型不同,比较结果当然不对

你要统一格式,比较的双方都是日期型才可以

select * from tablename where datediff(ss,m_mydatetime, cast('2007-5-10 13:58:38' as datetime))< 0

这样的格式就可以了
或直接
select * from tablename where datediff(ss,m_mydatetime, '2007-5-10 13:58:38')< 0
都可以。
simonhehe 2007-05-16
  • 打赏
  • 举报
回复
我想知道为什么select * where m_mydatetime > '2007-5-10 13:58:38'
--------
如果你的日期字段的类型是DATETIME,就会出现这种情况,因为在时间秒之后还有"毫秒"
如下:
'2007-5-10 13:58:38.000'
jszikun 2007-05-16
  • 打赏
  • 举报
回复
我想知道为什么select * where m_mydatetime > '2007-5-10 13:58:38'

我用上面的sql语句查数据库,奇怪为什么查出来的数据还包括了
2007-5-10 13:58:38 数据?
-狙击手- 2007-05-16
  • 打赏
  • 举报
回复
select * where datediff(ss,m_mydatetime, '2007-5-10 13:58:38')< 0
gahade 2007-05-16
  • 打赏
  • 举报
回复
select * where convert(char(19),m_mydatetime,120) > '2007-5-10 13:58:38'
crazyflower 2007-05-16
  • 打赏
  • 举报
回复
select * where m_mydatetime > '2007-5-10 13:58:38:999'
crazyflower 2007-05-16
  • 打赏
  • 举报
回复
select * where m_mydatetime > '2007-5-10 13:58:38:000'
jszikun 2007-05-16
  • 打赏
  • 举报
回复
m_mydatetime ='2007-5-10 13:58:38'
比较:select * from tablename where datediff(ss,m_mydatetime, '2007-5-10 13:58:38')> 0
发现还有包含:'2007-5-10 13:58:38'的记录
用:select datediff(ss,m_mydatetime, '2007-5-10 13:58:38') from tablename
返回值是1
jszikun 2007-05-16
  • 打赏
  • 举报
回复
我想知道为什么select * where m_mydatetime > '2007-5-10 13:58:38'
--------
如果你的日期字段的类型是DATETIME,就会出现这种情况,因为在时间秒之后还有"毫秒"
如下:
'2007-5-10 13:58:38.000'

是datetime类型,可为什么在企业管理器中看不到'2007-5-10 13:58:38.000' 而是 ‘到'2007-5-10 13:58:38’
ojuju10 2007-05-16
  • 打赏
  • 举报
回复
可能是时间类型不同,需要统一时间类型


select * from tblname
where convert(varchar(50),m_mydatetime,120)
>convert(varchar(50),'2007-5-10 13:58:38',120)
fa_ge 2007-05-16
  • 打赏
  • 举报
回复
simonhehe(流氓会武术,谁也挡不住)
说得对

22,209

社区成员

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

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