gpt4 book ai didi

SQL 服务器 : not getting last date with between query

转载 作者:行者123 更新时间:2023-12-02 06:30:51 27 4
gpt4 key购买 nike

我做错了什么?我有一个查询来获取两个日期之间的数据,但它没有获取最后一个日期。

我试过了

select * 
from data
where dates between '2016-01-01' and '2016-01-02'

select * 
from data
where dates >= '2016-01-01' and dates <= '2016-01-02'

我需要SQL Server返回2016-01-01到2016-01-02之间的数据

输出应该是

pid     name        date
-------------------------------
1 test2 2016-01-02
2 test2 2016-01-01
3 test3 2016-01-02

这行得通

select * 
from data
where dates >= '2016-01-01' and dates <= '2016-01-03'

但为什么我需要多加一天呢?

最佳答案

大概您的列(错误)命名为 dates 有一个时间组件。这应该适用于您想要的:

select *
from data
where dates >= '2016-01-01' and dates < '2016-01-03';

Aaron Bertrand,一位 SQL Server 大师,有一篇关于这个主题的优秀博客文章,What do BETWEEN and the devil have in common? .这是一个很好的起点。

或者,您可以将查询编写为:

select *
from data
where cast(dates as date) >= '2016-01-01' and dates <= '2016-01-02';

一旦删除时间组件,比较就会起作用。但是,我不愿意在列上使用函数,因为这会妨碍在查询中使用索引(SQL Server 为转换为 date 设置了一个异常(exception))。

关于SQL 服务器 : not getting last date with between query,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37864706/

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