【问题标题】:Create a computed DataTime Column by combining Date and Time Columns通过组合日期和时间列创建计算的日期时间列
【发布时间】:2019-11-27 15:14:40
【问题描述】:

我正在尝试通过组合日期和时间列来创建计算的日期时间列,但出现错误。

这是我尝试过的:

CAST(Date as DATETIME) + CAST(Time as DATETIME)

错误:

验证 DateTimeConso 列的公式时出错

知道强制转换或创建计算列的方式出了什么问题吗?

【问题讨论】:

  • 请注意这个公式。虽然使用CAST 和“添加”DATETIME 实例当然看起来很方便,但结果取决于使用字符串时的语言设置,如果您不注意日期总是没有时间,甚至可能会变得毫无意义。考虑更稳定的方法,例如 DATETIMEFROMPARTS/DATEPARTCONVERT 具有显式样式(取决于您的输入类型)。此外,请考虑使用 DATETIME2 类型以获得更好的精度和实际控制所需的精度。

标签: sql sql-server


【解决方案1】:

图形用户界面充其量是不稳定的。 ALTER 表“正确”使用 SQL:

ALTER TABLE dbo.YourTable ADD NewColumn AS CAST([Date] as DATETIME) + CAST([Time] as DATETIME);

请注意,如果[Time] 列的精度超过 1/100 秒,则使用此方法会丢失精度。

【讨论】:

    【解决方案2】:

    您可以使用选择查询来处理它

    SELECT CONVERT(DATETIME, CONVERT(CHAR(8), Date , 112) 
          + ' ' + CONVERT(CHAR(8), Time , 108))
          FROM table_name;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-11-29
      • 2019-10-23
      • 2018-09-16
      • 2017-11-17
      • 2016-10-11
      • 1970-01-01
      • 2021-10-22
      • 2022-11-23
      相关资源
      最近更新 更多