首页 > 解决方案 > 将 hhmmss 转换为 int(HH 转换为 int)

问题描述

我在表格中有一个列HHMMSS

与此类似:

SELECT convert(varchar, getdate(), 108)

我需要能够在 MSSMS 中仅使用 HH 生成视图并将其转换为 int。

示例时间

11:08:11, 
12:08:12
Int
11
,12

我已经尝试了这个页面上的几个技巧,但在https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/周围找不到任何工作

标签: sqlsql-server

解决方案


为什么不直接使用DATEPART?无需将值从 a 转换datetime为 avarchar然后再转换为 a int

SELECT DATEPART(HOUR, GETDATE());

编辑:另一方面,我强烈建议您始终确保在使用数据类型时声明您的长度、精度和比例。SELECT CONVERT(varchar, GETDATE(), 108)将在这里返回整个值,因为(在这种情况下)它会将值转换为 a varchar(25),但是,不声明这些参数可以/确实会导致意外行为。

我见过很多人们问“为什么这不起作用?”的问题。因为它们的 SP 被声明为CREATE PROC MyProc @String varchar AS ...,或者它们的变量声明为DECLARE @MyVar nvarchar;,这在这两种情况下都意味着长度的值为 1;因此它们的值被截断。

讽刺的编辑:不少于一个小时后......子字符串函数不比较输出;看来我需要订购一个新的水晶球。确切地说,为什么不声明您的长度、精度或比例是一个坏主意。


推荐阅读