DB2关于日期选择的问题,基本上需要从当前日期开始的前12个月
好的,以下DB2关于日期选择的问题,基本上需要从当前日期开始的前12个月,db2,Db2,好的,以下where条款有效,除非在1月份,计算结果显示无效日期: WHERE (DATE((DIGITS(LNYYP2) || '-' || DIGITS(LNMMP2) || '-' || DIGITS(LNDDP2))) > ((CURRENT DATE - DAY (CURRENT TIMESTAMP) DAYS)) - 13 MONTH) AND DIGITS(SHFP02.LNYYP2) || '-' || DIGITS(LNMMP2) <> YEAR (CU
where
条款有效,除非在1月份,计算结果显示无效日期:
WHERE
(DATE((DIGITS(LNYYP2) || '-' || DIGITS(LNMMP2) || '-' || DIGITS(LNDDP2))) >
((CURRENT DATE - DAY (CURRENT TIMESTAMP) DAYS)) - 13 MONTH)
AND DIGITS(SHFP02.LNYYP2) || '-' || DIGITS(LNMMP2) <>
YEAR (CURRENT TIMESTAMP) || '-' || MONTH (CURRENT TIMESTAMP)
在哪里
(日期((数字(LNYYP2)| |’—’| | |数字(LNMMP2)| |’—’| | |数字(LNDDP2))>
((当前日期-天(当前时间戳)天))-13个月)
和数字(SHFP02.LNYYP2)| |'-| |数字(LNMMP2)
年(当前时间戳)| |'-| |月(当前时间戳)
抱歉,看起来您使用的数据库与我想象的不同。这是如何在SQL Server中解决此问题的答案
原稿:
我不确定where子句中到底发生了什么,但您可以在12个月前通过DATEADD
获得。如果您需要获得每月的第一个,可以使用DATEFROMPARTS
构建它
declare @today date;
declare @past date;
set @today = SYSDATETIME();
set @past = dateadd(month, -12, @today)
select @today, @past, DATEFROMPARTS(YEAR(@past), MONTH(@PAST), 1)
潜在问题:
对于第二个条件
(DATE((DIGITS(LNYYP2) || '-' || DIGITS(LNMMP2) || '-' || DIGITS(LNDDP2))) >
((CURRENT DATE - DAY (CURRENT TIMESTAMP) DAYS)) - 13 MONTH)
您正在比较两个字符串,而不是两个日期或两组数字。我不确定这是否是你的问题,因为你没有给出任何给出正确或错误答案的样本数据,但也许可以更好地写为:
and (lnyyp2, lnmmp2) not in (values(int(year(current date)), int(month(current date)))
这不是tsql,不管您的标签是什么。也许吧?帮助别人,帮助你。“无效”日期的示例是什么?是否发生错误?如果是这样的话,POST IT.可能是一个SSIS expressionuse datediff函数,<13如前所述,我通常不支持此应用程序,我认为最有可能是MSSQL,但谁知道呢。目前无法访问软件以复制错误,但来自最终用户请求“执行SQL期间出错。错误:日期、时间或时间戳字符串中的java.SQL SQL异常[SQL0181]值无效”。如果我可以访问,可以将这一行缩小到实际行。
数字似乎只存在于DB2中。我正在更改标签和标题。如果这是T-SQL,答案是正确的,但原始海报给出的代码显示它是DB2….…但是有一个DATE(…)
函数调用,所以OP正在比较两个日期?所列的例外情况可能首先是抱怨日期的转换。