我使用下面的简单表达式获取持续时间:
doc['endTime'].date.millisOfDay - doc['startTime'].date.millisOfDay
但是问题开始于endTime超过startTime日。
示例:如果startTime为23:50,而endTime相同为00:12,则我们 午夜过去,这也会更改日期。
那样的话,我得到的时间绝对是错误的,除了所有两个时间都在同一天的情况都是预期的。
帮助我确定如何做到这一点。
答案 0 :(得分:0)
您应该简单地减去自历元以来的绝对毫秒值(而不是自一天开始以来的毫秒数):
SELECT P.PRODUCT_ID,
P.PRODUCT_NAME,
CONCAT(DATENAME(MONTH, @startdate), '''', RIGHT(DATENAME(YEAR, @startdate), 2)) AS StardPeriod,
CONCAT(DATENAME(MONTH, @enddate), '''', RIGHT(DATENAME(YEAR, @enddate), 2)) AS EndPeriod
FROM [Products$] P INNER JOIN
[InvDetails$] ID
ON ID.PRODUCT_ID = P.PRODUCT_ID INNER JOIN
[Invoices$] I
ON I.INVOICE_ID = ID.INVOICE_ID
WHERE I.INVOICE_DATE BETWEEN @startdate AND @enddate;