我有一个像这样的数据集:
computeHit
数据集的问题在于日期被分为年,月和日。
当我使用concat年,月和日时,我得到以下结果:
await
但是我想要这样的东西:
year | month | day | cust_id |
2018 9 7 xyz001
也就是说,只要我们有一位数字,我想在月和日列上添加零,而不要留下两位数字。
如何在SQL中执行此操作?
答案 0 :(得分:0)
您可以使用以下逻辑将大多数数据库中的日期转换为:
select cast(concat(year, '-', month, '-', day) as date)
拥有真正的日期可能就足够了。或者您可能想使用适当的日期格式转换回字符串。例如,在MySQL中,您可以使用date_format()
。
答案 1 :(得分:0)
一种方法是使用lpad()
。
SELECT concat(year, lpad(month, 2, '0'), lpad(day, 2, '0')) date
FROM elbat;
但是,您应该修改该设计并仅使用日期/时间类型的列。
答案 2 :(得分:0)
在大多数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
答案 3 :(得分:0)
尝试一下。
选择年份+''+月份+''+日期