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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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'
这样不对

参考技术A 转换一下即可:
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'

本回答被提问者和网友采纳
参考技术B 你的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'

参考技术C 这样试试 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'

参考技术D 奇怪。。为什么要去掉时分秒?

select count(*) from tb_users
where 时间>='2013-05-23'and
时间<'2013-05-24'
这样就ok了啊。。
第5个回答  推荐于2021-01-29 select * from table where 时间 between and 至于具体到分秒,你可以用format 函数

以上是关于sql查询:数据库中的时间有时分秒,我想查某一天和某一时间段的数据(2013-4-15,2013-5-4)的数据的主要内容,如果未能解决你的问题,请参考以下文章

mysql按照时间条件查询 忽略是时分秒查询

SQL语句:取某个日期所在季度的最后一天,精确到时分秒

js 获取当前月和当前周的第一天和最后一天

SQL开发实战技巧系列(十六):数据仓库中时间类型操作(初级)日月年时分秒之差及时间间隔计算

SQL查询怎么在年月日后面拼接上时分秒

MySQL中是不是有只支持时分秒 时间的数据类型