SQL在两个日期之间选择不工作

SQL在两个日期之间选择不工作,sql,Sql,我有一个名为“付款日期”(nvarchar(50))的列,我试图选择日期在2015年的所有行 Select ID,[Date of Payment] From mytable WHERE ('Date of Payment' BETWEEN '2015/01/1' AND '2015/12/31') 当我运行上面的select语句时,它不会返回任何行。付款样本的日期可能是2015年1月1日或2015年1月1日等。我的语法是否有问题?TIA您不能使用between,因为您的日期字段不是D

我有一个名为“付款日期”(nvarchar(50))的列,我试图选择日期在2015年的所有行

Select ID,[Date of Payment]
From mytable
WHERE     ('Date of Payment' BETWEEN '2015/01/1' AND '2015/12/31')

当我运行上面的select语句时,它不会返回任何行。付款样本的日期可能是2015年1月1日或2015年1月1日等。我的语法是否有问题?TIA

您不能使用between,因为您的日期字段不是DATETIME类型

Select ID,[Date of Payment]
From mytable
WHERE     [Date of Payment] like '%2015%'

您不能使用between,因为您的日期字段不是DATETIME类型

Select ID,[Date of Payment]
From mytable
WHERE     [Date of Payment] like '%2015%'

正如@MattGibson所说,您正在将字符串“付款日期”与字符串(表示日期)进行比较。这与列中的值无关

请检查如何在特定DBMS中存储日期。当然,您需要更改该列中的数据类型并更改正在进行的比较


另外,请指定您使用的数据库。

正如@MattGibson所说,您正在将字符串“付款日期”与字符串(表示日期)进行比较。这与列中的值无关

请检查如何在特定DBMS中存储日期。当然,您需要更改该列中的数据类型并更改正在进行的比较


另外,请指定您使用的数据库。

Where子句中有错误 如果我理解得很好,您可以使用MS-SQL,在这种方言中,字段名用方括号括起来,而不是用单引号括起来

Select [ID],[Date of Payment]
From [mytable]
WHERE     ([Date of Payment] BETWEEN '2015/01/01' AND '2015/12/31' )

Where子句中有一个错误 如果我理解得很好,您可以使用MS-SQL,在这种方言中,字段名用方括号括起来,而不是用单引号括起来

Select [ID],[Date of Payment]
From [mytable]
WHERE     ([Date of Payment] BETWEEN '2015/01/01' AND '2015/12/31' )

这是什么方言?您正在将一个字符串与两个字符串值进行比较。您已经了解到字母
'D'
不在数字
'2'
和数字
'2'
之间。我投票结束诸如不正确使用单引号(一个简单的印刷错误)之类的问题。@user1342164你希望它神奇地对字符串数据进行日期比较吗?在日期列而不是字符串列中存储日期。您使用的是哪种DBMS?
“付款日期”
是字符串文字,而不是列名,因此WHERE子句将始终为false。请改用双引号,如
“付款日期”
,或方括号(如果是MS SQL Server),即
[付款日期]
。这是什么方言?您正在将一个字符串与两个字符串值进行比较。您已经了解到字母
'D'
不在数字
'2'
和数字
'2'
之间。我投票结束诸如不正确使用单引号(一个简单的印刷错误)之类的问题。@user1342164你希望它神奇地对字符串数据进行日期比较吗?在日期列而不是字符串列中存储日期。您使用的是哪种DBMS?
“付款日期”
是字符串文字,而不是列名,因此WHERE子句将始终为false。改为使用双引号,如
“付款日期”
,或方括号(如果是MS SQL Server),即
[付款日期]
。您可以跳过第一个
%
,以加快速度,尤其是在列已编制索引的情况下。也就是说,你可以像“2015%”那样做
。你可以跳过第一个
%
,以加快速度,尤其是当列被索引时。也就是说,改为像“2015%”那样做