我有一个查询
SELECT
convert(varchar, dates, 101)
FROM
database
WHERE
dates BETWEEN '04/01/2015' AND '04/30/2015'
它返回所有4月份的日期,但问题在于每年(即2010年,2011年,2012年,2013年,2014年,2015年)。我认为它不会读取今年的最后两位数字,只是从2000年开始拉动所有内容。我在想这个是正确的吗?我该如何解决这个问题?
答案 0 :(得分:2)
您的日期列可能未定义为日期类型。您可以更新列类型...或在查询中显式转换它:
Select convert(varchar, dates, 101)
FROM database
Where convert(date,dates) BETWEEN '04/01/2015' and '04/30/2015'
如果您的日期字段被解释为文本字符串,它将为您提供所有4月日期的原因是因为所有4月日期将按字母顺序排序。如果它正确地将您的字段解释为日期,则可以正确地过滤它们。
答案 1 :(得分:2)
您需要以SQL Server正确理解的标准格式提供日期。请参阅Correct way of specifying a given date in T-SQL。
对你而言:
Where dates BETWEEN '20150401' and '20150430'
答案 2 :(得分:0)
在tSQL中,这对你有用:
SELECT DATEPART(year, dates)
FROM [database]
WHERE DATEPART(MONTH, dates) = 4 AND DATEPART(year, dates)=2015;