gpt4 book ai didi

SQL 查询不选择日期之间的所有行

转载 作者:行者123 更新时间:2023-12-01 09:55:06 25 4
gpt4 key购买 nike

我的 SQL 查询没有选择我要求的所有行。它只考虑日期时间的 Day 部分;几个月没有得到任何关注。

这是我的查询:

SELECT * 
FROM Reservations
WHERE ReservationDate >= '24/04/2015' AND ReservationDate <= '24/03/2015'"

这些日期没有结果,但是当日期更改为:

SELECT * 
FROM Reservations
WHERE ReservationDate >= '24/04/2015' AND ReservationDate <= '17/03/2015'"

我得到 2 个结果 when ReservationDate= "17/04/2015 15:02:03" and "21/04/2015 16:05:56" .

顺便说一下,R​​eservationDate 字段是字符串格式。即使在 DateTime 上,结果也是一样的。

 ReservationID  FriendID    TableNumber ReservationDate ReservationStatus 
16 58767732 32 21/04/2015 17:06:54 False
17 -1 32 21/04/2015 17:10:41 False
18 -1 2 21/04/2015 17:17:23 False
2 58767732 3 04/04/2015 19:37:17 False
3 -1 7 04/04/2015 19:37:43 False
4 -1 5 04/04/2015 23:24:24 False
5 -1 31 05/04/2015 16:29:02 False
6 -1 6 05/04/2015 16:40:29 False 7 -1 6 05/04/2015 17:12:47 False
8 58767732 32 09/04/2015 16:24:00 False
9 -1 6 09/04/2015 16:25:03 False

最佳答案

尝试对日期使用 between 运算符

    select * from Reservations 
where
ReservationDate between '17/03/2015'
and
DATE_ADD('24/04/2015',INTERVAL 1 DAY) // or something like that

此外,在 MySQL 中,您可以使用 DATE从日期时间中提取日期的函数:

    select * from Reservations
where
DATE(ReservationDate) BETWEEN '17/03/2015' AND '24/03/2015'

如果您使用的是 MS Sql Server,则有 some other从字符串中获取日期的解决方法。

更新:

因为@Netanelgo 说他正在使用 MS Access:

尝试 CDate() 将您的字符串转换为日期。

select  *  from Reservations
where CDate(date) between #17/03/2015# and #24/03/2015#;

如果它不起作用,因为 CDate 没有重新调整您的格式,您可以使用 DateSerial(year, month, day) 来构建日期。您将需要使用 mid$ 和 Cint() 来构建年、月和日参数。类似这样的格式“yyyy-mm-dd”:

DateSerial(CInt(mid(date, 1, 4)), CInt(mid(date, 6, 2)), CInt(mid(date, 9, 2))

关于SQL 查询不选择日期之间的所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29842352/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com