Sql server 当我在SQL Server中的两个日期之间进行选择时,结果将同时从范围内和范围外返回?

Sql server 当我在SQL Server中的两个日期之间进行选择时,结果将同时从范围内和范围外返回?,sql-server,tsql,Sql Server,Tsql,我有这个疑问 select * from Vw_storeout where ItemDate between '14/10/2018' and '15/10/2018' 结果得到了9月和10月的数据。事实上,我只是想要10月份的数据 我已将日期格式更改为varchar(50)日期是日期,您应该将其作为日期而不是字符串进行比较 select * from Vw_storeout where TRY_CAST(ItemDate AS DATE) between CAST('2018101

我有这个疑问

select * 
from Vw_storeout 
where ItemDate between '14/10/2018' and '15/10/2018'
结果得到了9月和10月的数据。事实上,我只是想要10月份的数据


我已将日期格式更改为
varchar(50)

日期是日期,您应该将其作为日期而不是字符串进行比较

select * 
from Vw_storeout 
where TRY_CAST(ItemDate AS DATE) between CAST('20181014' AS DATE) 
                                     and CAST('20181015' AS DATE);

您应该将
ItemDate
存储为
DATE
而不是
VARCHAR(50)

我遇到了这个错误。从字符串转换日期和/或时间时,转换失败。@当然,已将日期文字添加为与区域性无关的
ISO 8601
。为什么对
ItemDate
使用varchar类型?请考虑使用类似日期类型的东西。如果要保留varchar,答案可能是类似于“%/10/2018”这样的
where ItemDate'
。但我不建议这样做,“我已经将日期格式更改为varchar(50)。”这就是你的问题所在。将日期存储为date,如果您还需要时间,则将日期存储为DateTime2。不要将它们存储为字符串、整数或其他任何形式。