从SQL表的utcTimeStamp行中提取小时和分钟
因此,我知道这个过程将查询出一个以UTCStampTime方式格式化的行。我遇到的问题是,当我想在两个CTE上构建一个查询时,我只需要在每个CTE变量上的时间相等时返回。但问题是,我的查询只查看最后10分钟,我只希望当utcTimeStamp列的分钟数相同时,这两行相等。这是我正在运行的查询从SQL表的utcTimeStamp行中提取小时和分钟,sql,sql-server,Sql,Sql Server,因此,我知道这个过程将查询出一个以UTCStampTime方式格式化的行。我遇到的问题是,当我想在两个CTE上构建一个查询时,我只需要在每个CTE变量上的时间相等时返回。但问题是,我的查询只查看最后10分钟,我只希望当utcTimeStamp列的分钟数相同时,这两行相等。这是我正在运行的查询 GO declare @fqnLine1Downtime varChar(4000) declare @fqnLine1Throughput varChar(400) decl
GO
declare @fqnLine1Downtime varChar(4000)
declare @fqnLine1Throughput varChar(400)
declare @fqnLine2Downtime varChar(4000)
declare @fqnLine2Throughput varChar(400)
declare @parameter1Line1 varChar(4000)
declare @parameter2Line1 varChar(4000)
declare @parameter1Line2 varChar(4000)
declare @parameter2Line2 varChar(4000)
declare @server varChar(200)
declare @timeStart datetime
declare @timeEnd datetime
WITH
CTEThroughputLine1(Time, Amount, ThroughputLine1)
AS
--Define the query
(
SELECT CONVERT(VarChar(20),utcTimeStamp) as Time, shortName as
ThroughputLine1, valueAsInt as Amount
From dbo.History(@fqnLine1Throughput, @parameter2Line1, @timeStart,
@timeEnd, @server)
),
CTEThroughputLine2(ThroughputLine2, Amount, Time)
AS
(
Select shortName as ThroughputLine2, valueAsFloat as Amount,
CONVERT(VarChar(20),utcTimeStamp) as Time
From dbo.History(@fqnLine2Throughput, @parameter2Line2, @timeStart,
@timeEnd, @server)
)
我故意不包括变量的设置,因为它包括我公司的私人信息。我认为这应该足以解决这个问题。请提供帮助或指出提示。请共享您表的DDL,或者至少告诉我们
utcTimeStamp
是什么数据类型。另外,您可能需要查看:DATEPART(mi,Line1.Time)=DATEPART(mi,Line2.Time)
-您正在使用MS SQL Server,是吗?请用您的RDBMS产品重新标记您的问题。我不是说“用RDBMS重新标记”!我的意思是:删除“microsoft”标记并为您的RDBMS添加标记,例如“sql server 2008”或“mysql”。
select * from CTEThroughputLine1 as Line1 inner join
CTEThroughputLine2 as Line2 on Line1.Time = Line2.Time