Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询将两个日期列合并为一个组合列_Sql_Date - Fatal编程技术网

SQL查询将两个日期列合并为一个组合列

SQL查询将两个日期列合并为一个组合列,sql,date,Sql,Date,我有一个包含两个不同数据列的表,我想将它们合并为一列l.date\u Combined 首先考虑在 L.DATEYTIMEIONIC 中是否存在日期。如果为空,请在l.date\u time\u mc中查找日期。将结果放入l.date\u Combined 我能够执行where子句,但我不知道如何为组合字段构建更新逻辑 select l.id, l.date_time_ic, l.date_time_mc from new.customers l where

我有一个包含两个不同数据列的表,我想将它们合并为一列
l.date\u Combined

<>首先考虑在<代码> L.DATEYTIMEIONIC 中是否存在日期。如果为空,请在
l.date\u time\u mc
中查找日期。将结果放入
l.date\u Combined

我能够执行where子句,但我不知道如何为组合字段构建更新逻辑

select
    l.id,
    l.date_time_ic,
    l.date_time_mc
from 
    new.customers l
where
    ((l.date_time_ic between '4/1/2018' and '4/30/2018') or
    (l.date_time_mc between '4/1/2018' and '4/30/2018' and
     l.date_time_ic is null));

我相信您只需要
coalesce()
。更重要的是,使用ISO/ANSI标准格式表示日期,例如YYYY-MM-DD:

select l.id,
       coalesce(l.date_time_ic, l.date_time_mc) as thedate
from new.customers l
where coalesce(l.date_time_ic, l.date_time_mc) >= '2018-04-01' and
      coalesce(l.date_time_ic, l.date_time_mc) < '2018-05-01' ;
选择l.id,
合并(l.date\u time\u ic,l.date\u time\u mc)作为日期
来自新客户l
其中,联合(l.date\u time\u ic,l.date\u time\u mc)>='2018-04-01'和
合并(l.date_time_ic,l.date_time_mc)<'2018-05-01';

您会注意到,我将日期逻辑更改为使用比较,而不是在之间使用
。是一个关于这个主题的好博客。博客中的大部分内容适用于所有数据库,而不仅仅是SQL Server。

感谢您提出的第一个问题,Matt!您需要使用SQL“更新”而不是select。试着从“更新”一文开始:然后当你对更新的工作方式有了更好的了解时,可以调整你提供的查询作为一个例子,社区可以为您提供更好的帮助。只需添加使用ISNULL/COALESCE函数,这可能会对您有所帮助。@M.K.Hunter-我不想使用Update。@rajatswal使用Case station怎么样?我不知道ISNULL/COALESCE。非常感谢。我会调查的,我会试试这个。谢谢。