gpt4 book ai didi

sql - 为什么我在同一个表中的两个日期之间进行选择不起作用?

转载 作者:行者123 更新时间:2023-12-02 19:21:06 25 4
gpt4 key购买 nike

我使用 SQL Server 2014,我尝试以下查询在同一个表中的两个日期之间进行选择,数据类型为 nvarchar,我执行了以下查询,它只显示了三行('30/03/2015','30/04/2015','30/04/2015'),但实际上有('29/02/2015','30/03/2015','31/04/2015','30/04/2015','30/04/2015')

select RegisteredDate
from Student
where Student.RegisteredDate between convert(nvarchar, '30/01/2014', 103)
and convert(nvarchar, '30/04/2015', 103)

最佳答案

反过来,比较字符串的其他方式:

select RegisteredDate from Student
where convert(date, Student.RegisteredDate, 103) between '20140130' and '20150430'

事实上,那些保存为字符串的日期的顺序如下:

'29/02/2015',
'30/03/2015',
'30/04/2015',
'30/04/2015',
'31/04/2015'

现在想象一下您将在哪里添加过滤器值?

 '29/02/2015',

'30/01/2014' --start date

/-------------\
|'30/03/2015',|
|'30/04/2015',|
|'30/04/2015',|
\-------------/

'30/04/2015' --end date

'31/04/2015'

因此 Between 将返回这三行。您的数据中也有 29/02/20152015 二月于 28 结束(表中的数据已不正确)。如果你正确选择类型,你将永远无法插入这样的值。所以结论是:

为您的数据使用适当的数据类型!

关于sql - 为什么我在同一个表中的两个日期之间进行选择不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29971910/

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