sql查询:数据库中的时间有时分秒,我想查某一天和某一时间段的数据(2013-4-15,2013-5-4)的数据

应该怎么写查询语句
SELECT count(*) from tb_users where convert(varchar(10),enter_date,120)
BETWEEN '2013-05-23' AND '2013-05-24'
这样不对

第1个回答  推荐于2018-03-04
转换一下即可:
sqlserver:
select * from tab
where convert(varchar(10),datecol,120)
between '2013-04-15' and '2013-05-04'
oracle
select * from tabxxx
where to_char(datecol,'yyyy-mm-dd') between '2013-04-15' and '2013-05-04'追问

不对

追答

怎么不对,你要查某一天的数据,等于就行了
SELECT count(*) from tb_users where convert(varchar(10),enter_date,120) = '2013-05-24'

between是大于等于,小于等于

SELECT count(*) from tb_users where convert(varchar(10),enter_date,120) BETWEEN '2013-05-23' AND '2013-05-24'
是查23,24两天的数据

追问

convert(varchar(10),enter_date,120)是这个不对

追答

能把问题描述清楚点吗?

你的enter_date是datetime还是varchar类型?
如果是datetime类型,不应该错
如果是varchar类型,那你的日期格式是什么?如果是完整的yyyy-MM-dd hh:mm:ss,你就直接left就可以了
left(enter_date,10) = '2013-07-05'

本回答被提问者和网友采纳
第2个回答  2013-07-29
奇怪。。为什么要去掉时分秒?

select count(*) from tb_users
where 时间>='2013-05-23'and
时间<'2013-05-24'
这样就ok了啊。。
第3个回答  2013-07-29
你的enter_date不是datetime精工的吗,不要转换

SELECT count(*)
from tb_users
where enter_date BETWEEN '2013-05-23' AND '2013-05-24'

直接这样就ok追问

只能取到23号的,不能获取24号的

追答

SELECT count(*)
from tb_users
where enter_date BETWEEN '2013-05-23 00:00:00' AND '2013-05-24 23:59:59'

第4个回答  2013-07-29
这样试试 SELECT count(*) from tb_users where enter_date>='2013-05-23' AND enter_date<'2013-05-24'追问

只能取到一天的,取不到两天的

追答

是只取一天,没取两天.
大于23日,小于24日的,没错啊。
用between 就是加时间'2013-05-23 00:00:00' and '2013-05-24 23:59:59'

第5个回答  推荐于2021-01-29
select * from table where 时间 between and 至于具体到分秒,你可以用format 函数
相似回答