【问题标题】:Computed Column Formula计算列公式
【发布时间】:2025-12-14 22:45:03
【问题描述】:

我用这个公式创建了一个计算列:

(CONVERT([datetime],(CONVERT([varchar],[TradeDate])+' ')+CONVERT([varchar],[TradeTime])))

但是当我保存表格时,公式会自动更改为:

(CONVERT([datetime],(CONVERT([varchar],[TradeDate],0)+' ')+CONVERT([varchar],[TradeTime],0),0))

所以导致了这个问题:

假设TradeDate 是:2012-08-13TradeTime 是:10:29:59.0000000

由于更改了公式,它没有显示2012-08-13 10:29:59.000,而是显示2012-08-13 10:29:00.000

解决办法是什么?

【问题讨论】:

  • 您的TradeDateTradeTime 列是什么数据类型?另外:当转换为VARCHAR 时,您应该总是VARCHAR(x) 结果定义一个length
  • 还有:您使用的是什么版本的 SQL Server(2000、2005、2008、2008 R2、2012)?
  • TradeDate 是日期,TradeTime 是时间(7)。 SQL Server 2008 R2

标签: sql-server formula calculated-columns


【解决方案1】:

只需使用(CONVERT([datetime],[TradeDate],0)+CONVERT([datetime],[TradeTime],0))

【讨论】:

    【解决方案2】:

    SQL Server 将0 添加到您的转换表达式,因为这是默认样式,它以mon dd yyyy hh:miAM (or PM) 格式表示日期时间

    你的转换函数中的第三个参数代表样式。所以0 or 100代表默认样式。所以你可以在创建计算列时指定样式。

    CAST and Convert

    【讨论】: