连接后如何转换为日期数据类型?

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中把数据库中的日期字段转换为短日期格式

如何在 flex 中将字符串数据类型转换为日期数据类型

如何将日期时间转换为数字数据类型?

如何从字符串转换为日期数据类型?

如何将 Pandas 数据框中的字符串转换为“日期”数据类型?

如何在java类中向oracle数据库写入Date类型的日期