SQL查询不返回日期范围之间的数据

SQL查询不返回日期范围之间的数据,sql,Sql,我试图在“付款日期”列之间返回结果,而当我运行下面的查询时,我没有得到正确的结果。我从那个专栏中得到的数据可能是2013年10月1日。你知道我在这里做错了什么吗?我只想要2017年的排名。。短暂性脑缺血发作 付款日期列类型为nvarchar(50) 样本列数据如2017年10月31日 SELECT ID, [Date of Payment] FROM tblData WHERE ([Date of Payment] BETWEEN '1/1/2017' AND

我试图在“付款日期”列之间返回结果,而当我运行下面的查询时,我没有得到正确的结果。我从那个专栏中得到的数据可能是2013年10月1日。你知道我在这里做错了什么吗?我只想要2017年的排名。。短暂性脑缺血发作

付款日期列类型为nvarchar(50)

样本列数据如2017年10月31日

SELECT     ID,  [Date of Payment]
FROM         tblData
WHERE     ([Date of Payment] BETWEEN '1/1/2017' AND '12/31/2017')
(我假设SQL Server是基于语法的。)

修复表中的
[付款日期]
数据

update tblData
    set [Date of Payment] = convert(date, [Date of Payment], 101);

alter tblData
    alter column [Date of Payment] date;
瞧!你的问题解决了

还应将数据类型更改为使用ISO标准格式:

WHERE [Date of Payment] BETWEEN '2017-01-01' AND '2017-12-31'
尝试下一个代码 避免在字段名中加空格,并用下划线替换

SELECT     ID,  PaymentDate
FROM         tblData
WHERE (PaymentDate BETWEEN CONVERT(DATETIME, '2017-01-01', 102) AND CONVERT(DATETIME, '2017-12-30', 102))

用您正在使用的数据库标记您的问题。将列类型更改为date。当我运行此操作时,我在“between”附近得到了不正确的语法?其中,在转换(“付款日期”,2017103年1月1日)和转换(“付款日期”,2017103年12月31日)之间,其中(转换(日期时间,'2017-01-01',102)和转换(日期时间,'2017-12-30',102')之间的付款日期)尝试了此操作,当从字符串转换日期和/或时间时,我得到错误转换失败,其中([付款日期]在转换之间(日期时间'2017-01-01',102)和转换(日期时间'2017-12-30',102))