【问题标题】:How do I replace NULL in datediff with a text如何用文本替换 datediff 中的 NULL
【发布时间】:2022-01-06 11:47:00
【问题描述】:

我有 2 个不同的日期列,我正在使用 datediff 来计算工作年限。但是当人们仍在工作时会有空值我想知道如何用文本“仍在工作”替换它

这是我的桌子

ID     DateofHire    DateofTermination
1      2011-07-05    NULL
2      2015-03-30    2016-06-16
3      2011-07-05    2012-09-24
4      2008-01-07    NULL

我使用了 datediff 公式,它显示如下:

DATEDIFF(year,DateofHire,DateofTermination) as 'Years of working'

ID    Years_of_Working
1     NULL
2     1
3     1
4     NULL

我写了一个 datediff 查询后如何替换 NULL,我想用 'Still Working'

替换它

想要的表应该是这样的:

ID       Years_of_Working
1        Still working
2        1
3        1
4        Still Working

【问题讨论】:

  • 你试过sql的is_null()函数吗?
  • 我还没有尝试过,但我不确定将它放在查询中的哪个位置我是 SQL 新手

标签: sql replace null datediff


【解决方案1】:

我假设您将获得 Years_of_Working 作为整数值。用不同的类型替换表的属性是不一致的。 我只是将 NULL 值替换为 0,这意味着这些人仍在工作。

因此,如果原始表名为hire_info,则解决方案将如下所示:

with diff_years as (
   select ID,DATEDIFF(year,DateofHire,DateofTermination) as 'Years of working'
   from hire_info
)
select ID, ISNULL(Years_of_Working,0) Years_of_Working
from diff_years

【讨论】:

  • 我有两个不同的列,分别是雇用日期和终止日期,我创建了一个新列: DATEDIFF(year,DateofHire,DateofTermination) 作为“工作年限”,里面的值为 NULL,从您的解决方案中,我认为我应该有一个名为 diff_years 的现有列
  • 能否请您写下sql命令如何生成最后一张表?
  • 最后一个表是所需的表,这是我想要的结果,但我不知道如何得到它
  • 对不起,我的意思是在那之前的桌子。
  • DATEDIFF(year,DateofHire,DateofTermination) as 'Years of working' 就是这个查询
【解决方案2】:

您可以使用此查询。您应该将表名更改为您自己的表名。

SELECT id, if(isnull(DateofTermination),"Still working",TIMESTAMPDIFF(year,DateofHire,DateofTermination)) as 'Years of working' from date_diff;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-12-10
    • 1970-01-01
    • 2020-08-27
    • 2014-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    相关资源
    最近更新 更多