Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.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 2005 TSQL-案例日期比较_Sql Server 2005_Reporting Services - Fatal编程技术网

Sql server 2005 TSQL-案例日期比较

Sql server 2005 TSQL-案例日期比较,sql-server-2005,reporting-services,Sql Server 2005,Reporting Services,我正在尝试比较SQL中的日期,并创建一个新字段,以允许我按今天日期和其他日期对结果进行分组。我正在将两个日期转换为字符。但是,我在=和附近得到一个表达式错误)-这是针对SSRS报告的 已经有一个相当复杂的SQL语句,我只是想添加这个额外的语句来帮助分组 这里有一个例子 案例 当Convert(Char(8),FieldDate,103)=Convert(Char(8),GetDate(),103)时,tmpDate='1' ELSE tmpDate='0' 结束 这会导致在“=”附近出现错误的s

我正在尝试比较SQL中的日期,并创建一个新字段,以允许我按今天日期和其他日期对结果进行分组。我正在将两个日期转换为字符。但是,我在=和附近得到一个表达式错误)-这是针对SSRS报告的

已经有一个相当复杂的SQL语句,我只是想添加这个额外的语句来帮助分组

这里有一个例子

案例 当Convert(Char(8),FieldDate,103)=Convert(Char(8),GetDate(),103)时,tmpDate='1' ELSE tmpDate='0' 结束

这会导致在“=”附近出现错误的sntax 这会导致错误的sntax(')'


谢谢

如果您的示例来自您的代码(复制/粘贴),“Then tmpDate-'1'”将不起作用。您使用连字符而不是等号?

如果您的示例来自您的代码(复制/粘贴),“那么tmpDate-'1'”将不起作用。你用连字符而不是等号?

为什么不直接比较日期

CASE WHEN DATEDIFF(day, FieldDate, GETDATE()) = 0 THEN 1 ELSE 0 END AS tmpDate

为什么不直接比较日期呢

CASE WHEN DATEDIFF(day, FieldDate, GETDATE()) = 0 THEN 1 ELSE 0 END AS tmpDate

将字段移到前面:

select tmpDate = 
    CASE
    WHEN Convert(Char(8), FieldDate, 103) = Convert(Char(8), GetDate(), 103) Then  '1' 
    ELSE '0' END

将字段移到前面:

select tmpDate = 
    CASE
    WHEN Convert(Char(8), FieldDate, 103) = Convert(Char(8), GetDate(), 103) Then  '1' 
    ELSE '0' END

抱歉,这是一个输入错误,代码在一个没有互联网接入的系统上。它被设置为=not-now fixed up。很抱歉,这是一个输入错误,代码位于无法访问internet的系统上。它被设置为=not-now fixed在上面。我正在考虑这样做,但不确定它将如何正确地拾取日期。然而,快速看一眼,它似乎起了作用。我之前一直在寻找关于无时间返回日期的建议,方法是指向我上面的第一个方法。如上所述使用
DATEDIFF
可以比较两个日期。如果您确实希望只返回日期元素作为
DATETIME
而不是字符串,则可以使用
DATEADD(day,0,DATEDIFF(日期,0,字段日期))
etc,其时间元素将设置为
00:00:00.000
。我正考虑这样做,但不确定它将如何正确地提取日期。但是,快速查看它似乎起到了作用。我之前一直在寻找关于无时间返回日期的建议,方法指向我上面的第一个方法。使用
date上面的DIFF
可以比较两个日期。如果您确实想将日期元素作为
DATETIME
而不是字符串返回,那么您可以使用
DATEADD(day,0,DATEDIFF(day,0,FieldDate))
等将时间元素设置为
00:00.000