连接后如何转换为日期数据类型?
Posted
技术标签:
【中文标题】连接后如何转换为日期数据类型?【英文标题】:How do I convert to date data_type after concatenating? 【发布时间】:2019-10-10 16:52:28 【问题描述】:我有一个查询,我将月份和年份连接起来并将其保存为 MY,这会将其转换为字符串。连接后需要帮助从字符串转换为日期数据类型。
select concat (month(date),'-', year(date)) as MY, post_evar10, device_type, sum(pageviews) as pageviews, count(distinct uniquevisitors) as uniquevisitors
from temp.MS_Adobe_Discover1
group by MY, post_evar10, device_type
order by MY asc;
【问题讨论】:
【参考方案1】:如果你想在 Sparksql 中转换为日期:
select to_date(concat(year(date), '-', month(date), '-01')) as yyyymmdd,
post_evar10, device_type,
sum(pageviews) as pageviews, count(distinct uniquevisitors) as uniquevisitors
from temp.MS_Adobe_Discover1
group by yyyymmdd, post_evar10, device_type
order by yyyymmdd asc;
【讨论】:
现在日期是 2018-10-01,我只想显示 2018-10 是月份和年份。 @NewCode 。 . . “需要帮助转换为日期数据类型”。这是你的问题,也是这个答案的作用。如果你想要一个 YYYY-MM 格式的字符串,你就有了。【参考方案2】:没有像“2019-10”或“10-2019”这样的日期类型格式。
我们可以从日期类型中获取此字符串,但不能将字符串从“2019-10”或“10-2019”转换为日期数据类型。它会给出错误:
如果我们想要进行这种转换,我们必须像 Gordon 为您显示的那样为字符串添加一个“DD”。
或者请不要将其转换为日期数据类型,仍然使用 varchar 数据类型。与您的查询略有不同:
select concat (year(date),'-', month(date)) as MY, post_evar10, device_type, sum(pageviews) as pageviews, count(distinct uniquevisitors) as uniquevisitors
from temp.MS_Adobe_Discover1
group by MY, post_evar10, device_type
order by MY asc;
希望这会有所帮助。
【讨论】:
以上是关于连接后如何转换为日期数据类型?的主要内容,如果未能解决你的问题,请参考以下文章
如何在sql server中把数据库中的日期字段转换为短日期格式