【问题标题】:How to copy values from bit column to datetime column?如何将值从位列复制到日期时间列?
【发布时间】:2015-06-10 09:04:32
【问题描述】:

我想将表Person 中名为“absent”的bit 列中的值复制到我刚刚创建的新的空datetime 列中。

bit 类型列包含值为 null、0 和 1 的行。

现在,我想将此 bit 列的值复制到新的 datetime 列,这样,bit 列中的所有 null AND 0 值将是 datetime 列中的 null 值.所有 1 值都是新的当前日期。

如何做到这一点?我尝试在 w3bschools 中搜索一些示例,但找不到任何示例。

【问题讨论】:

标签: sql sql-server datetime sql-server-2012


【解决方案1】:

好吧,你可以这样做:

update Person
set dateTime_Column = case when isnull(absent, 0) = 0 then null else getdate() end

【讨论】:

  • 同一分钟解决两个问题的答案。怎么办?
  • @SteveWaters 很好,答案几乎相同,并且在同一分钟内(实际上我的答案早了几秒钟)。只需掷硬币,让它选择答案;)
【解决方案2】:

试试这个:

update someTable
set dateColumn = case when bitColumn is null or bitColumn = 0 then null else getdate() end

【讨论】:

  • 同一分钟解决两个问题的答案。怎么办?
  • 您可以认为@Andy Korneyev 是第一个,但我的查询将使用bitColumn 上的可能索引,但如果存在任何索引,Andy 的查询将不会使用该索引。所以完全由你来选择。完全没问题:)
【解决方案3】:

如果您在创建新列时没有使用默认值,您实际上只需要更新 bitColumn = 1 的行并将其他行保留为空。

update Person
set dateTime_Column = getdate()
where bitColumn = 1

【讨论】:

    猜你喜欢
    • 2016-01-21
    • 2013-11-29
    • 2021-09-27
    • 2019-11-29
    • 2019-09-06
    • 2020-03-20
    • 2022-01-22
    • 2019-12-27
    • 2015-05-02
    相关资源
    最近更新 更多