DATEADD(second, -#{time}, GETDATE())转成金仓sql
时间: 2023-11-27 08:06:08 浏览: 82
在金仓SQL中,可以使用DATEADD函数和GETDATE函数来实现和你提到的T-SQL语句相同的功能,如下所示:
```
DATEADD(SS, -#{time}, CURRENT_TIMESTAMP)
```
其中,SS表示时间单位为秒,CURRENT_TIMESTAMP表示当前系统时间。你只需要将#{time}替换为你需要的秒数即可。
相关问题
解释一下这段代码 with a as ( SELECT CONVERT(nvarchar(10), getdate() ,120) AS datatime,1 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -1, getdate()) ,120) AS datatime,2 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -2, getdate()) ,120) AS datatime,3 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -3, getdate()) ,120) AS datatime,4 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -4, getdate()) ,120) AS datatime,5 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -5, getdate()) ,120) AS datatime,6 as sortnum union all SELECT CONVERT(nvarchar(10), DATEADD(day, -6, getdate()) ,120) AS datatime,7 as sortnum ), b as ( select GET_DATE,TAG_VALUE from T_TAG_DATA where TAG_ID = 1408 ) , -- 当日产量 c as ( select a.datatime,ISNULL(sum(b.TAG_VALUE),0) as 当日产量 from a left join b on a.datatime = SUBSTRING(CONVERT(varchar(100), b.GET_DATE, 120),1,10) GROUP BY a.datatime ), -- 台时产量 d as( select a.datatime,b.TAG_VALUE as 台时产量 from a left join b on a.datatime = SUBSTRING(CONVERT(varchar(100), b.GET_DATE, 120),1,10) where SUBSTRING(CONVERT(varchar,GETDATE(),120),12,2) = SUBSTRING(CONVERT(varchar(100), b.GET_DATE, 120),12,2) ), -- 累计产量 e as ( SELECT CONVERT(nvarchar(10), getdate() ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= getdate() union all SELECT CONVERT(nvarchar(10), DATEADD(day, -1, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -1, getdate()) union all SELECT CONVERT(nvarchar(10), DATEADD(day, -2, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -2, getdate()) union all SELECT CONVERT(nvarchar(10), DATEADD(day, -3, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -3, getdate()) union all SELECT CONVERT(nvarchar(10), DATEADD(day, -4, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -4, getdate()) union all SELECT CONVERT(nvarchar(10), DATEADD(day, -5, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -5, getdate()) union all SELECT CONVERT(nvarchar(10), DATEADD(day, -6, getdate()) ,120) AS datatime,sum(TAG_VALUE) as 累计产量 from b where GET_DATE <= DATEADD(day, -6, getdate()) ) select SUBSTRING(a.datatime,6,10) as datatime,ISNULL(c.当日产量,0) as 当日产量,ISNULL(d.台时产量,0) as 台时产量,ISNULL(e.累计产量,0) as 累计产量 from a left join c on a.datatime = c.datatime left join d on a.datatime = d.datatime left join e on a.datatime = e.datatime order by a.datatime asc
这段代码是一个 SQL 查询语句,主要是用于查询某个时间范围内的产量数据。其中,第一部分使用了 with 关键字,创建了一个名为 a 的子查询,生成了过去 7 天的日期和序号;第二部分使用了名为 b 的子查询,查询了一个特定的 TAG_ID 的产量数据;第三部分使用了名为 c 的子查询,查询了每天的产量数据,并计算出每天的当日产量;第四部分使用了名为 d 的子查询,查询了每小时的产量数据,并计算出当天的台时产量;第五部分使用了名为 e 的子查询,查询了过去 7 天的累计产量数据;最后将 a, c, d, e 四个子查询进行 left join 操作,生成了最终的查询结果。
Error querying database. Cause: java.sql.SQLException: sql injection violation, deny schema : master : select taskTime,sum(allNum) 'taskNum',sum(doneNum) 'taskDoneNum' from ( select CONVERT(char(7),task_time,120) taskTime, count(*) allNum, COUNT(CASE WHEN current_status = '3' THEN 1 ELSE null END) doneNum from [grid_monitor].[dbo].[t_grid_task] where is_deleted = 0 and task_time >= dateadd(month, datediff(month, 0, dateAdd(month,-11,getdate())),0) and task_time < getdate() group by CONVERT(char(7),task_time,120) union select convert(varchar(7),DATEADD(month,number,dateadd(month, datediff(month, 0, dateAdd(month,-11,getdate())),0)),120) taskTime, 0 allNum,0 doneNum from MASTER..SPT_VALUES as a where a.type='P' and DATEADD(month,number,dateadd(month, datediff(month, 0, dateAdd(month,-11,getdate())),0)) < getdate() ) a group by taskTime order by taskTime
这个错误看起来像是SQL注入攻击,数据库检测到了非法字符或语句,并禁止了相关操作。如果您正在开发一个应用程序,可以尝试使用参数化查询来避免SQL注入攻击。如果这个查询是手动输入的,那么请确保您的查询语句没有任何非法字符或语句,并且您有足够的权限来访问数据库。如果问题仍然存在,请检查您的数据库连接字符串以确保它正确,并且数据库已经正确配置。
阅读全文