【问题标题】:Adding varchar value and datetime in MS SQL在 MS SQL 中添加 varchar 值和日期时间
【发布时间】:2014-11-20 10:38:17
【问题描述】:

我在查询方面需要一些帮助。

我有以下列:

Fulltime (datetime)
Hour (varchar)

我需要将小时转换为时间格式,并将其添加到Fulltime

例如:

Fulltime = 2009-10-10 00:00:00:000
Hour = 10:30
Result = 2009-10-10 10:30:00:000

我找到了许多将 varchar 转换为日期时间的方法,但它总是在结果中添加一个日期。

【问题讨论】:

  • 您使用的是哪个 DBMS?是 MS SQL Server 还是 MySQL 或其他?
  • 您可以简单地将两者相加 - SELECT CONVERT(DATETIME, '2009-10-10 00:00:00:000', 120) + CAST('10:30' AS TIME)
  • 我试了一下,报错:add operator中的数据类型datetime和time不兼容
  • 嗯,它们似乎在 SQL Server 2008 中兼容,但在 SQL Server 2012 中不兼容。您需要将时间分配给 DATETIME 而不是 TIME - SELECT CONVERT(DATETIME, '2009-10-10 00:00:00:000', 120) + CAST('10:30' AS DATETIME)
  • 谢谢。它正在工作!

标签: sql datetime time hour


【解决方案1】:

将Hour 转换为日期时间并将其添加到Fulltime 中,例如:

Select Fulltime + CAST(Hour as DATETIME)

如果您想要删除现有时间部分并添加小时,那么:

SELECT Cast(Cast(Fulltime AS DATE) AS DATETIME)
       + Cast(Hour AS DATETIME) 

【讨论】:

  • 我可以知道否决票的原因。这有什么问题那么我真的很想知道.. :) 谢谢
  • 好吧,不是我对你的答案投了反对票,但它只是检查了它,它工作正常。谢谢!
【解决方案2】:

试试这样的:

SELECT '2009-10-10 00:00:00:000' + CONVERT(DATETIME, CAST ('10:30' AS time))

并用您的变量/列替换字符串表示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多