google-cloud-platform - PARSE_DATETIME 格式与一年中的某一天
问题描述
BigQuery 中的 PARSE_DATETIME 函数与年份 (%j) 格式元素一起使用时出现问题。该函数似乎忽略了年份元素。
例如。
select PARSE_DATETIME("%Y%j", "2013243")
返回2013-01-01T00:00:00
,缺少一年中的某天组件。
但是,具有相同日期格式元素的反向函数按预期工作:
select FORMAT_DATETIME("%Y%j", "2013-02-02T00:00:00")
返回:2013033
漏洞?还是用户错误?
干杯
解决方案
不是错误,也不是错误!PARSE_DATETIME 使用 format_string 和 DATETIME 的 STRING 表示来返回 DATETIME -> "2013243" 不代表 DATETIME 字符串,而不是 DATE...
为了实现您要查找的内容,首先获取日期编号 - 1 并将其添加到日期(一年中的第一天)并将输出格式化为 DATETIME
SELECT DATETIME(DATE_ADD((SELECT PARSE_DATE("%Y%j", "2013243")), INTERVAL CAST((SELECT SUBSTR("2013243", -3)) AS INT64) -1 DAY));
输出:2013-08-31T00:00:00
推荐阅读
- cakephp - Cakephp 管理员前缀路由
- javascript - 渲染反应图标/组件
- excel - 如何在 vba 中放置正确的 vlookup 范围(其他工作表)?
- node.js - 如何在猫鼬中找到数组的 2 个相对对象属性
- javascript - 尝试将某些内容保存到 firebase 实时数据库时出现错误消息
- javascript - IIFE 内部的功能无法正常工作
- javascript - 如何从页面加载中删除所有 javascript,除了嵌入在 html pupeteer 中的内容
- javascript - JavaScript 使用 ${} 来使用类参数
- azure - 命令中出现意外的坏字符 U+0040 '@'
- omnet++ - INET:从上层接收到的帧,同时已经在传输