2010-04-15 422 views
4

我想检查日期是否在开始日期和结束日期之间。开始日期到结束日期之间的查找时间

我添加了一个WHERE子句

where datepaid between '2010-04-01' AND '2010-04-15' 

但问题是,它排除了 '2010-04-15'。

它应该包括结束日期我该怎么做?

请帮我在这

问候,

潘卡

回答

14

指定时间部分明确:

WHERE datepaid BETWEEN '2010-04-01 00:00:00' AND '2010-04-15 23:59:59' 
+0

它包括像2010-04-15 23:59:59.56? – 2010-04-15 10:25:00

+1

@Jens:据我所知,MySQL不存储小数秒。如果它确实支持它们,那么我会将该子句改为“BETWEEN'2010-04-01 00:00:00.000'和'2010-04-15 23:59:59.999''。 – LukeH 2010-04-15 10:47:12

5

也许你的日期包括盘中倍。试试这个:

where '2010-04-01' <= datepaid AND datepaid < '2010-04-16' 
+1

喜用于回复这意味着我有至1天的时间间隔添加到感谢结束日期以获取正确的记录 – 2010-04-15 10:27:46

0

尝试

where datepaid between '2010-04-01' AND '2010-04-15 23:59:59' 
+2

我爱那么多人保持他们的独角兽头像! – 2010-04-15 10:17:08

-1

添加这个条款:

OR datepaid = '2010-04-15' 
+0

这不会做任何事情。 “BETWEEN”条款已经涵盖了这种情况。 – 2010-04-15 10:17:23

1
WHERE datepaid >= '2010-04-01' 
     AND datepaid < '2010-04-15' + INTERVAL 1 DAY 
0

这可能是由于有时间日期:

select 
    '2010-04-15' between '2010-04-01' AND '2010-04-15', -- 1 
    '2010-04-15 12:00:00' between '2010-04-01' AND '2010-04-15', -- 0 
    '2010-04-15 12:00:00' between '2010-04-01 00:00:00' AND '2010-04-15 23:59:59' -- 1 

要么添加时间范围分隔符或比较之前截断值:

select 
    '2010-04-15 12:00:00' between '2010-04-01 00:00:00' AND '2010-04-15 23:59:59' -- 1 
    cast('2010-04-15 12:00:00' as date) between '2010-04-01' AND '2010-04-15' -- 1 

我没有检查,但我想表现没有更好的铸件。

0

其中CONVERT(VARCHAR(10),datepaid,23) '2010-04-01' 之间AND '2010-04-15'

相关问题