mysql的date()函数查询问题

tanlijun37 2008-07-01 04:15:41
我有一sql语句:
select * from table1 where date(selltime) = '2008-12-01' 查询不到数据,但是用
  select * from table1 where trim(date(selltime)) = '2008-12-01' 却能查询出来需要数据
  有谁能告诉我原因。。。。
环境:
  linux redhat
mysql 5.0.45-community
...全文
508 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
WWWWA 2008-07-02
  • 打赏
  • 举报
回复
用你上述代码建立表,插入上述数据,用
select * from table1 where date(selltime) = '2008-12-01'
可以查询出来数据。MYSQL 5.1.17
tanlijun37 2008-07-02
  • 打赏
  • 举报
回复
CREATE TABLE `table1` (
`id` int(11) NOT NULL,
`selltime` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
WWWWA 2008-07-02
  • 打赏
  • 举报
回复
SELTIME是DATETIME型,检查记录中是否有TIME?
懒得去死 2008-07-01
  • 打赏
  • 举报
回复
Tell us your table's structure and the key distribution.
tanlijun37 2008-07-01
  • 打赏
  • 举报
回复
结果是一样的啊,主是原因是null
WWWWA 2008-07-01
  • 打赏
  • 举报
回复
你用
select *,date(selltime),trim(date(selltime)) from tt2
看看结果就知道了
tanlijun37 2008-07-01
  • 打赏
  • 举报
回复
问题我已经解决了,用trim(date(selltime))='2008-01-01'就行了。
tanlijun37 2008-07-01
  • 打赏
  • 举报
回复
我只想知道一下真正的原因
WWWWA 2008-07-01
  • 打赏
  • 举报
回复
用IFNULL判断一下
tanlijun37 2008-07-01
  • 打赏
  • 举报
回复
其实问题刚刚找到,如果没有null值,用date函数就没有问题。如果有null值,符合条件的结果在null值前面就能查出来,在null值后面的就查询不出来,不知道是什么原因
WWWWA 2008-07-01
  • 打赏
  • 举报
回复
纠正:
select * from tt2 where date(ifnull(selltime,'2008-1-1')) = '2008-12-01'
WWWWA 2008-07-01
  • 打赏
  • 举报
回复
try:
select * from table1 where date(ifnull(selltime,selltime,'2008-1-1')) = '2008-12-01'
tanlijun37 2008-07-01
  • 打赏
  • 举报
回复
selltime
null
2008-12-01
2008-12-02
2008-12-03
tanlijun37 2008-07-01
  • 打赏
  • 举报
回复
utf-8 selltime中有null值
WWWWA 2008-07-01
  • 打赏
  • 举报
回复
字符集是什么?
WWWWA 2008-07-01
  • 打赏
  • 举报
回复
贴记录出来看看
WWWWA 2008-07-01
  • 打赏
  • 举报
回复
selltime中的内容?

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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