我在一个表中有两列:第一列仅以 varchar(257) 格式存储 hhmm(例如 2350 aka 11:50pm)。第二列是时间戳。
我如何获得两者之间的微小差异?
这是两列的示例。在 Management Studio 中,我单击 Alt + F1 查看有关表的信息,我被告知第 1 列是 varchar 类型,第 2 列是 Datetime 类型:
我在一个表中有两列:第一列仅以 varchar(257) 格式存储 hhmm(例如 2350 aka 11:50pm)。第二列是时间戳。
我如何获得两者之间的微小差异?
这是两列的示例。在 Management Studio 中,我单击 Alt + F1 查看有关表的信息,我被告知第 1 列是 varchar 类型,第 2 列是 Datetime 类型:
如果您将其作为消耗性数据提供,这会更快更容易。我没有费心输入你所有的样本数据。这里的挑战是数据存储不正确。我意识到这超出了您的控制范围,但您仍然必须将其强制恢复为可用的数据类型。您需要为此添加一些验证,以确保这些值是有效时间。这也不能处理跨越日的界限,但考虑到数据的性质,我不知道你怎么能假装处理得很好。
create table #Something
(
Col1 varchar(10)
, Col2 datetime
)
insert #Something
select '1230', '2014-12-19 13:09:00.000' union all
select '1350', '2015-08-10 14:49:00.000'
select Col1
, Col2
, DATEDIFF(minute, cast(STUFF(Col1, 3, 0, ':') as time), CAST(Col2 as time))
from #Something