0

我是 SQL 新手,我知道如何在十进制类型的 sql 中使用过滤器,但这次我使用的是字符串类型。

  • 我需要过滤大于“3 小时”或“180 分钟”的任何内容
  • 我能够让它过滤任何大于“3 hrs”的东西
  • 但无法过滤超过 180 分钟的任何内容

这是此表的输出屏幕截图。

在此处输入图像描述

这是 SQL 选择语句,它正在工作

SELECT EVENTID,
       STARTDATETIME,
       F_NAME,
       DURATIONHM,
       NUM_PEOPLE

  FROM EVENT_FACT
  where DURATIONHM > '3 hrs'
4

1 回答 1

1

您无法按照您想要的方式编写查询。您需要将持续时间以分钟为单位存储为数字,然后使用:

where duration >= 3*60

您可以通过大量努力创建一个解析字符串以获取分钟的视图。在某些数据库中,您还可以将这样的字符串转换为时间或间隔数据类型,这会让您走得更远。

但是,您发现将持续时间存储为字符串不符合您对该字段的查询要求。(如果您尝试按持续时间排序,您会发现同样的事情。)

于 2012-07-09T16:04:08.557 回答