Sql 如何获取这两个日期的值

Sql 如何获取这两个日期的值,sql,sql-server,sql-server-2000,Sql,Sql Server,Sql Server 2000,我想选择日期之间的值 表1 Code Period Datefrom dateto Value 001 07/2011 01/07/2009 10/07/2009 100 211 07/2009 01/07/2009 05/07/2009 200 从上表中,我想检查datefrom和dateto之间的日期,如果日期介于datefrom dateto之间或等于datefrom dateto means,它应该返回empcode的值 试问 SELECT Value FROM ta

我想选择日期之间的值

表1

Code Period  Datefrom   dateto     Value
001  07/2011 01/07/2009 10/07/2009 100
211  07/2009 01/07/2009 05/07/2009 200
从上表中,我想检查datefrom和dateto之间的日期,如果日期介于datefrom dateto之间或等于datefrom dateto means,它应该返回empcode的值

试问

SELECT Value
FROM table1
Where Period = '07/2009'
and Code = '211'
and Cast('02/07/2009' as Datetime) between datefrom and dateto
预期产出:

code value
211  200
上面的查询显示空值,它应该返回200

我的查询有什么问题?

您的
演员阵容('02/07/2009'作为日期时间)
默认为您带来2月7日 用这个代替

SELECT Code, Value 
FROM table1 
Where 
    Period = '07/2009' 
and Code = '211'  
and CONVERT(DATETIME, '02/07/2009', 103) between datefrom and dateto
但是

如果列为varchar类型,您可能也必须将
datefrom
dateto
列转换为

选择代码、值
 SELECT Code, Value
 from table1 
 where Period = '07/2009' 
 and Code = '211'
 and DateFrom <='02/07/2009'
 and DateTo >= '02/07/2009'
来自表1 其中期间='07/2009' 代码='211' 日期从='02/07/2009'
您可以使用以下查询

SELECT   code
       , value 
FROM   table1 
WHERE  period = '07/2009' 
AND    code   = '211' 
AND    convert(datetime,'02/07/2009',101) 
       between 
       convert(datetime,datefrom,101) and convert(datetime,dateto,101)

您的列是datetime还是varchar?您可以尝试在where子句中使用'YYYYMMDD',以确保SQL Server不会混淆什么是月,什么是日。能否发布表的架构,以便我们了解数据类型?我假设代码和值是varchar对的?错的!需要从英国格式转换字符串日期。查询是一样的,除了select LIST中的Code列我想是2月7日:-),如果这些列有datetime值(而不是字符串),则不需要转换这些列@HansKesting是的,错过了关于日期的内容,但已经写了关于列8-)