当前位置: 首页 > 知识库问答 >
问题:

where子句中的presto-static日期和时间戳

法和安
2023-03-14

我很确定以下查询在Presto上适用:

select segment, sum(count)
from modeling_trends
where segment='2557172' and date = '2016-06-23' and count_time between '2016-06-23 14:00:00.000' and '2016-06-23 14:59:59.000';
group by 1;

现在,当我运行它(在EMR上的Presto0.147上)时,我得到了一个尝试将varchar分配给日期/时间戳的错误。

我可以使用以下方法使其工作:

select segment, sum(count)
from modeling_trends
where segment='2557172' and date = cast('2016-06-23' as date) and count_time between cast('2016-06-23 14:00:00.000' as TIMESTAMP) and cast('2016-06-23 14:59:59.000' as TIMESTAMP)
group by segment;

但感觉很脏...有没有更好的办法做到这一点?

共有1个答案

池照
2023-03-14

与其他一些数据库不同,Presto不会自动在varchar和其他类型之间进行转换,即使对于常量也是如此。强制转换起作用,但更简单的方法是使用类型构造函数:

WHERE segment = '2557172'
  AND date = date '2016-06-23'
  AND count_time BETWEEN timestamp '2016-06-23 14:00:00.000' AND timestamp '2016-06-23 14:59:59.000'

您可以在这里看到各种类型的示例:https://prestosql.io/docs/current/language/types.html

 类似资料:
  • 问题内容: 我只想要从当前日期开始的日期。我如何在CodeIgniter中询问此问题?“ end_date”是DATETIME(Ymd H:i:s)。 这不起作用: 问题答案: 您需要使用PHP格式化日期,以便采用MySQL想要的格式。 试试这个: 您也可以为此使用MySQL 。 编辑:如果要使用别名 ,则可以使用HAVING代替WHERE。

  • 问题内容: 我有一个带有timestamp列的表,我想获取特定月份的时间戳记(例如,9月1日至9月30日之间的timpestamp),如果该月份为31天,则需要考虑这些值。我使用以下查询: 我可以加吗?? date_array将是整个月的日期? 问题答案: 要使其与索引一起使用,您可以执行

  • 问题内容: 我有一个包含datetime列的表。我希望无论何时都返回给定日期的所有记录。换句话说,如果我的表仅包含以下4条记录,那么如果我限制为2012-12-25,则仅返回第二和第三条记录。 问题答案: 永远不要 使用像这样的选择器-它是性能杀手: 它将为所有不匹配的行(包括那些行)计算 它将无法使用索引进行查询 使用起来更快 因为这将允许索引使用而无需计算。 编辑 正如Used_By_Alre

  • 问题内容: 我有下面的SQLite表,其中包含198,305个地理编码的葡萄牙邮政编码: 我在PHP中还具有以下用户定义的函数,该函数返回两个坐标之间的距离: 只有 874个 记录的距离小于或等于1 km。 问题 UDF在SQL查询中可以完美地工作,但是由于某些原因,我不能在子句中使用它的返回值-例如,如果我执行查询: 它返回1035条记录, _ 排序时间约为0.05秒, _但是 最后一条记录的距

  • 问题内容: 我正试图让我的cron只收到在接下来的7天内将要重复/续签的内容,以发送提醒电子邮件。我刚刚发现我的逻辑不太奏效。 我目前有查询: 但是,我意识到我需要做的事情是这样的: 伪SQL: 我将如何在Laravel 4中使用DATETIME数据类型来做到这一点,所以我只使用时间戳来完成这种事情。 更新: 使用以下代码后,即可解决此问题,当您可以拉出一些代码并从上下文中查看它们时,Stacko

  • 问题内容: 希望有人可以帮助, 我想做的是从任何给定的月份从数据库中提取所有结果,是否可能仅使用mysql查询(没有php)。 我使用的模板应用程序具有我唯一的访问权限,是通过mysql where语句,所以我需要从“ 2013-04-01”中计算出月份是多少,如果需要的话,请抓住它。 下面的代码有效,但显然也将2013年与我联系在一起。 问题答案: 参考