Sql DATEDIFF显示空值
我使用DATEDIFF来区分创建第一个单位费率的时间和过账日期是该项目的第一笔交易过账的时间。 我得到了所需的结果,但是DateDiff函数为某些行提供了起始日期的空值Sql DATEDIFF显示空值,sql,sql-server-2014,Sql,Sql Server 2014,我使用DATEDIFF来区分创建第一个单位费率的时间和过账日期是该项目的第一笔交易过账的时间。 我得到了所需的结果,但是DateDiff函数为某些行提供了起始日期的空值 SELECT DISTINCT b.[Entry No_] , a.[Starting Date], b.[Posting Date], b.[Item No_], b.[Invoiced Quantity],
SELECT DISTINCT b.[Entry No_] ,
a.[Starting Date],
b.[Posting Date],
b.[Item No_],
b.[Invoiced Quantity],
a.[Litre Conversion Factor],
a.[Unit Rate] ,
b.[Location Code],
a.[Excise Location],
a.[Excise Type Code],
a.[Unit Of Measure Code]
FROM [Spier Live$Value Entry] b
LEFT JOIN [Transfer Excise Tbl] a
ON a.[No_] = b.[Item No_]
AND b.[Location Code] = a.[Location Code]
AND DateDiff(y,b.[Posting Date],a.[Starting Date]) > -365 --DateDiff Year -365 for starting date
AND DateDiff(y,b.[Posting Date],a.[Starting Date]) < 0 --DateDiff Yer < 0 for posting date
WHERE b.[Posting Date] > '2013-02-26' --This is when the unit rate was entered
AND b.[Gen_ Bus_ Posting Group] IN ('LOCA','EXSA')
AND b.[Invoiced Quantity] <>0 --Removing all zero values
AND b.[Item No_] = 'F00335'
ORDER BY b.[Posting Date]
选择不同的b.[条目编号],
a、 [开始日期],
b、 [投寄日期],
b、 [项目编号],
b、 [发票数量],
a、 [升换算系数],
a、 [单位价格],
b、 [地点代码],
a、 [消费税地点],
a、 [消费税类型代码],
a、 [计量单位代码]
来自[Spier Live$Value Entry]b
左连接[转移消费税待决]a
在a.[No.]=b.[Item No.]
和b[位置代码]=a[位置代码]
和DateDiff(y,b[过帐日期],a[开始日期]>-365——DateDiff Year-365表示开始日期
和DateDiff(y,b[过帐日期],a[开始日期]<0——过帐日期的DateDiff Yer<0
其中b.[过账日期]>“2013-02-26”-这是输入单价的时间
以及('LOCA'、'EXSA'中的b.[Gen_uuuuuuu总线张贴组])
和b.[开票数量]0——删除所有零值
和b.[项目编号]=“F00335”
b订单【过账日期】
这是我要加入的表,正如alex在评论中指出的,你要寻找的是基于一年中的某一天而不是一年中的某一天的datediff。你是说你用的是哪种日期差。。。年或日如果在这种情况下,您的任何日期
null
,这是完全正确的行为。它还能显示什么@alex,我在用yearssorry,你确定要用dayofyear吗?DateDiff(y,b[发布日期],a[开始日期])>-365 y是dayofyear我已经附上了我的结果,这是我需要的结果,但我没有尝试修复我的日期差异,是的,我需要筛选小于-365的项目,因为这就是我们的ERP系统的工作方式。删除空值并显示正确数据的最佳方法是什么?解决问题的最佳方法是尝试人们提供的解决方案,并告诉他们这些解决方案是否有效。或者首先确保你问的是正确的事情。确认:您想按年还是按天筛选?如果是天,请修复您的查询,并告诉我们它的作用。如果你真的想按年份过滤-根据-365
的存在,这似乎是错误的-那么你的查询工作得很好,而且你需要更清楚在这种情况下你想要什么,而不是null
s。你不能只是“删除空值”;因为它们本身表示缺少数据。很抱歉,y DATEDIFF是dayofyear,yuo可以使用yy表示年,使用dd表示日