【问题标题】:How to get the time difference between two date stamps and arrange in DESCENDING ORDER如何获取两个日期戳之间的时间差并按降序排列
【发布时间】:2019-10-24 12:54:11
【问题描述】:

我需要以小时为单位的两个日期戳之间的时间差,并且需要按降序排列它们以获得中位数

SELECT "fulfillmentshistories"."fulfillmentid" as "Fulfillment ID" FROM FULFILLMENTHISTORIES
WHERE (Fulfillments."status" IN ('paid','delivered') AND (DATE("fulfillmenthistories"."createdAt") BETWEEN DATE('{{startDate}}') AND DATE('{{endDate}}')))
union
SELECT DATEDIFF(HOUR,   'startDate'-'endDate') as DATEDIFF;
ORDER BY DATEDIFF, DESC

这是我试过的,请帮忙

SELECT "fulfillmentshistories"."fulfillmentid" as "Fulfillment ID" FROM    FULFILLMENTHISTORIES
WHERE (Fulfillments."status" IN ('paid','delivered') AND (DATE ("fulfillmenthistories"."createdAt") BETWEEN DATE('{{startDate}}') AND DATE('{{endDate}}')))
union
SELECT DATEDIFF(HOUR,   'startDate'-'endDate') as DATEDIFF;
ORDER BY DATEDIFF, DESC

运行查询时出错:“ORDER”第 5 行或附近的语法错误:ORDER BY DATEDIFF, DESC ^

【问题讨论】:

  • as DATEDIFF; ORDER BY DATEDIFF, DESC 应该是as DATEDIFF ORDER BY DATEDIFF DESC

标签: sql redash


【解决方案1】:
SELECT DATEDIFF(HOUR, 'startDate'-'endDate') as DATEDIFF; ORDER BY DATEDIFF, DESC

应该是

SELECT DATEDIFF(HOUR, 'startDate'-'endDate') as DATEDIFF ORDER BY DATEDIFF, DESC ;

并尽量避免使用与函数名相似的别名。

【讨论】:

  • 我还没有看到任何变化
  • 运行查询时出错:在“DESC”第 4 行或附近出现语法错误:...'startDate'-'endDate') as DATEDIFF ORDER BY DATEDIFF, DESC ; ^ 这是我遇到的错误。
  • 第二个 SELECT 语句是否也需要 FROM 子句?
【解决方案2】:
UNION
SELECT DATEDIFF(HOUR,   'startDate'-'endDate') as DATEDIFF;
ORDER BY DATEDIFF, DESC

应该是

UNION
SELECT DATEDIFF(HOUR,   'startDate'-'endDate') as DATEDIFF
ORDER BY DATEDIFF DESC;

删除 DATEDIFF 后的分号和 ORDER BY DATEDIFF 后的逗号。分号应该放在 SQL 语句的末尾,因为整个语句就是一个 sql 语句。

【讨论】:

    猜你喜欢
    • 2022-11-11
    • 1970-01-01
    • 2013-09-08
    • 2014-05-22
    • 1970-01-01
    • 2021-04-11
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多