【问题标题】:Converting datetime to date and time only仅将日期时间转换为日期和时间
【发布时间】:2016-03-17 19:46:40
【问题描述】:

我在 SQL Server 中连接 2 列,它们的数据类型均为 datetime

UPDATE dbo.Feban_stg 
SET [Date & Time Posted] = CONCAT(CONVERT(VARCHAR(10), [Date Posted], 110), RIGHT(CONVERT(varchar, [Time Posted], 100), 7))

到目前为止我总是收到这个错误

从字符串转换日期和/或时间时转换失败。

发布的日期和时间的数据类型也是日期时间。

谢谢

【问题讨论】:

  • 将您的更新转换为先选择以查看您的 concat 实际创建的内容。输出可能不是您的 SQL 服务器上使用的文化特定日期时间格式。
  • 1900-01-01 17:30:00.000 1900-01-01 17:34:00.000 1900-01-01 18:06:00.000 @JennyO'Reilly 这是输出
  • 请提供dbo.Feban_stg表的样本。
  • 假设我有 3 列,发布日期、发布时间和发布日期和时间,所以基本上发布日期和时间列只是发布日期和发布时间的串联列。 @gofr1
  • 嗯...例如[Date Posted] 2016-03-17 [Time Posted] 15:48:01.000这样吗?

标签: sql-server date datetime


【解决方案1】:

问题是日期部分和时间部分之间没有空格。 CANCAT 只是添加字符串。试试这个:

UPDATE dbo.Feban_stg 
SET [Date & Time Posted] = CONCAT(CONVERT(VARCHAR(10), [Date Posted], 110), ' ', RIGHT(CONVERT(varchar, [Time Posted], 100), 8))

此外,您需要在 RIGHT 函数中使用 8 而不是 7 才能获得完整的小时数。

【讨论】:

  • 这很奇怪,因为在@christinaG 发布的示例中,日期和时间部分之间存在空格。
  • @JennyO'Reilly 问题出在连接 [Date Posted] 的日期部分和 [Time Posted] 的时间部分的结果字符串中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-20
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
相关资源
最近更新 更多