Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 如何在WHERE子句中使用DATENAME_Sql Server 2008_Where - Fatal编程技术网

Sql server 2008 如何在WHERE子句中使用DATENAME

Sql server 2008 如何在WHERE子句中使用DATENAME,sql-server-2008,where,Sql Server 2008,Where,我正在使用Sql Server 2008,我的表中有一个名为Date的列,我想获取特定日期的数据。。。。我需要在我的条件下给出这个日期 DATANAME(MONTH,'@Date') 例如,如果我想获取给定日期中特定月份的记录,如何在WHERE条件下使用该日期 DATANAME(MONTH,'@Date') 如果我在查询中这样给出,我可以得到从给定日期开始的月份,就像我尝试输入WHERE条件一样 WHERE DATE= DATANAME(MONTH,'@Date') 这里它报告转

我正在使用Sql Server 2008,我的表中有一个名为Date的列,我想获取特定日期的数据。。。。我需要在我的条件下给出这个日期

DATANAME(MONTH,'@Date') 
例如,如果我想获取给定日期中特定月份的记录,如何在WHERE条件下使用该日期

DATANAME(MONTH,'@Date') 
如果我在查询中这样给出,我可以得到从给定日期开始的月份,就像我尝试输入WHERE条件一样

WHERE DATE=    DATANAME(MONTH,'@Date')

这里它报告转换错误…我如何显示特定月份的数据,有人能帮我吗?

对我来说,您的字段日期似乎不是varchar或nvarchar类型,因此使用Datetime=字符串的条件显然是错误的

你试过了吗

WHERE DATE= @Date

在我看来,您的字段Date不是varchar或nvarchar类型,因此使用Datetime=string的条件显然是错误的

你试过了吗

WHERE DATE= @Date
难道不是:

DATENAME(MONTH, @Date) 
而不是:

DATANAME(MONTH,'@Date') 
请注意,数据与日期和@DATE不在报价单中

然后,要对日期/日期时间列使用此选项,您必须按如下所示对两侧进行强制转换:

WHERE datename(Month, [Date]) = datename(Month, [Date])
警告:上面没有使用任何索引,因此没有Date=Date有效,不是吗

DATENAME(MONTH, @Date) 
而不是:

DATANAME(MONTH,'@Date') 
请注意,数据与日期和@DATE不在报价单中

然后,要对日期/日期时间列使用此选项,您必须按如下所示对两侧进行强制转换:

WHERE datename(Month, [Date]) = datename(Month, [Date])

警告:上面没有使用任何索引,因此没有Date=Date有效。如果要显示特定年份和月份的数据,可以使用和函数:

SELECT ...
FROM ...
WHERE YEAR(mydate) = 2012 AND MONTH(mydate) = 3 -- March, 2012

如果要显示特定年份和月份的数据,可以使用和功能:

SELECT ...
FROM ...
WHERE YEAR(mydate) = 2012 AND MONTH(mydate) = 3 -- March, 2012

第一:从变量中删除@日期,而不是“@Date”

如果要查找特定月份的日期。你还必须记住一年的情况

WHERE DATANAME(MONTH, @Date) = 'April'
如果要查找确切日期,请执行以下操作:

WHERE DATE = @date

第一:从变量中删除@日期,而不是“@Date”

如果要查找特定月份的日期。你还必须记住一年的情况

WHERE DATANAME(MONTH, @Date) = 'April'
如果要查找确切日期,请执行以下操作:

WHERE DATE = @date

如果您想要一个表有一个月的数据,您应该检查间隔。如果对日期列应用函数,则查询无法对该列使用索引

使用类似的方法获取2012年4月的数据

-- The date parameter
declare @Date datetime
set @Date = '2012-04-11'

declare @FromDate datetime
declare @ToDate datetime

-- set FromFate to first of april
set @FromDate = dateadd(month, datediff(month, 0, @Date), 0)
-- set ToDate to first of may
set @ToDate = dateadd(month, 1+datediff(month, 0, @Date), 0)

select *
from YourTable
where [Date] >= @FromDate and [Date] < @ToDate

如果您想要一个表有一个月的数据,您应该检查间隔。如果对日期列应用函数,则查询无法对该列使用索引

使用类似的方法获取2012年4月的数据

-- The date parameter
declare @Date datetime
set @Date = '2012-04-11'

declare @FromDate datetime
declare @ToDate datetime

-- set FromFate to first of april
set @FromDate = dateadd(month, datediff(month, 0, @Date), 0)
-- set ToDate to first of may
set @ToDate = dateadd(month, 1+datediff(month, 0, @Date), 0)

select *
from YourTable
where [Date] >= @FromDate and [Date] < @ToDate

感谢Jakob和阿赖恩,在UR查询中,手动将日期和月份的值设为2012和3,我需要从我的查询中自动得到它。例如,AuthMyDeal= DATaMeMon,@日期……这里考虑@日期为“2012-04-11”,此处,its返回的输出为APRIL as month,无法将字符串转换为int…..是否可以获取数字形式的月份,如4Hanks Jakob和Arion,在您的查询中,手动将日期和月份的值设置为2012和3,我需要从我的查询中自动获取…..例如YEARmydate=DATENAMEMONTH,@日期…这里考虑@日期为“2012-04-11”,在这里,它返回的输出为四月作为月份,无法将字符串转换为int…..是否可以像4s一样获取月份的数字,它是一个日期时间类型…..正如u所说,如果我使用WHERE DATE=@DATE,并且正在传递@DATE的值为'2012-04-11',它应该只显示2012年4月11日的记录,对……如果我将日期值传递为“2012-04-11”,我需要显示4月份的所有数据……任何想法都是Datetime类型……正如你所说的,如果我使用WHERE Date=@Date,并且正在传递@Date的值是“2012-04-11”,它应该只显示2012年4月11日的记录,对……如果我将日期值传递为“2012-04-11”,我需要显示4月份的所有数据……任何想法都需要手动将月份值指定为“April”,但我的要求是必须自动分配,如果我将日期设置为“2012-04-11”,它会自动将月份设置为04或4月,并在4月显示所有数据。因此,可能类似于这样的情况,其中datanamemount、@date=datenamemount、date在您的查询中手动将月份值设置为“April”,但我的要求是必须自动分配月份值,如果我将日期设置为'2012-04-11',它会自动将月份设置为04或4月,并在4月显示所有数据,因此可能类似于这样的情况,其中datanamemount,@date=datenamemount,date