我需要从结构为 yyyyMMddHHmmss 20170227141500 的时间戳中按年和月分组

Posted

技术标签:

【中文标题】我需要从结构为 yyyyMMddHHmmss 20170227141500 的时间戳中按年和月分组【英文标题】:I need to group by year and month from a timestamp structured as yyyyMMddHHmmss 20170227141500 【发布时间】:2021-02-10 21:45:50 【问题描述】:

我需要从时间戳按年和月分组,结构为 yyyyMMddHHmmss 20170227141500(Google 的 bigquery gkg 表)。我需要计算年份的每月记录。数据类型为整数。时间戳是列名。事实上,我需要按时间戳的前 6 位进行分组。 yearmonth 是我的组名,不包含在表中。

SELECT count(GKGRECORDID), themes, yearmonth
FROM `gdelt-bq.gdeltv2.gkg` 
CONCAT(yearmonth( timestamp))

group by GKGRECORDID, themes, yearmonth

【问题讨论】:

列的数据类型是什么> 【参考方案1】:

这是一个数字,因此您不能使用日期/时间功能。可以转换成字符串,取最左边的6个字符:

SELECT themes, left(cast(timestamp as string), 6) as yearmonth,
       count(GKGRECORDID)
FROM `gdelt-bq.gdeltv2.gkg` 
GROUP BY themes, yearmonth;

您应该修复数据以将日期/时间值存储为datetimes 或timestamps。

【讨论】:

以上是关于我需要从结构为 yyyyMMddHHmmss 20170227141500 的时间戳中按年和月分组的主要内容,如果未能解决你的问题,请参考以下文章

sqlserver中将datetime类型转换为yyyyMMddHHmmss格式

如何在SQL Server中将datetime值转换为yyyymmddhhmmss?

无法将 yyyyMMddHHmmss 格式的字符串日期转换为 DateTime dart

SQL怎么取当前时间是YYYYMMDDHHMMSS格式的?

将字符串转换为日期 SparkSQL

用C语言实现:首先获取系统时钟,然后时钟数据格式为:年月日时分秒(YYYYMMDDHHMMSS)