用于将日期(月/日)值追加零的 SQL 查询



我有一个这样的数据集:

year | month | day | cust_id |
2018    9       7    xyz001

数据集的问题在于日期被拆分为年、月和日。

当我使用 concat 年、月和日时,我得到以下结果:

date:
201897

但我想要这样的东西:

date:
20180907

也就是说,每当我们有个位数时,我想在月份和日列中添加附加零,并保留两位数的值。

如何在 SQL 中执行此操作?

一种方法是使用 lpad()

SELECT concat(year, lpad(month, 2, '0'), lpad(day, 2, '0')) date
       FROM elbat;

但是,您应该修改该设计并仅使用日期/时间类型的列。

您可以使用如下逻辑在大多数数据库中转换为日期:

select cast(concat(year, '-', month, '-', day) as date)

有一个真正的日期可能就足够了。 或者,您可能希望使用适当的日期格式转换回字符串。 例如,在MySQL中,您可以使用date_format()

试试这个。

选择年 + ' ' +

月 + ' ' + 日

在大多数 SQL 风格中,您可以使用 case 语句来应用逻辑(在这种情况下,以个位数日期值作为前缀 0): http://www.mysqltutorial.org/mysql-case-statement/

例如

select 
Year,
case
when len(month) = 2 then month
when len(month) = 1 then '0'+month else '' end as month,
case 
when len(day) = 2 then day
when len(day) = 1 then '0'+day else '' end as day
from table

我希望这有助于展示如何构建案例陈述,然后您可以按如下方式连接它们:

select 
Year +
case
when len(month) = 2 then month
when len(month) = 1 then '0'+month else '' end +
case 
when len(day) = 2 then day
when len(day) = 1 then '0'+day else '' end +''+ as FullDate
from table

相关内容

  • 没有找到相关文章

最新更新