一种在SQL Server中无秒数存储时间的方法

Sip*_*ipo 5 sql-server time

我希望以这种格式在SQL Server数据库中节省时间:

hh:mm
Run Code Online (Sandbox Code Playgroud)

而不是这个:

hh:mm:ss
Run Code Online (Sandbox Code Playgroud)

那可能吗?是否有一个独特的数据类型(我试图浏览数据类型列表,但未能找到;尝试也搜索MSDN,但没有找到).还有另外一种方法吗?我真的不希望存储第二个.

The*_*war 6

使用SQL Server 2012 提供的Format函数

select format(getdate(),'hh:mm')

Insert into sometable
(timepart)
values
(
format(getdate(),'hh:mm'))
Run Code Online (Sandbox Code Playgroud)

输出:

07:08


sag*_*agi 5

如果您使用的是 SQL-Server 2008+ ,则可以使用TIME类型并重置秒数,然后在选择时忽略它们。

如果没有,您可以考虑将它们保存为字符串(提取 HH:MI)或整数(从 00:00 开始计算分钟)。就像@destination-data 所说的那样,您应该注意,您将无法使用 SQL-Server 可用的时间函数,但您可以在必要时将它们转换回日期。


des*_*ata 5

不,没有用于此的数据类型。最小的是time(0),精确到一秒。

SELECT
    -- Returns time in the format hh:mm:ss
    CAST(GETDATE() AS TIME(0))
;
Run Code Online (Sandbox Code Playgroud)

您可以添加检查约束以确保秒数始终等于 00,但我不确定这会增加什么值。


shA*_*A.t 5

我认为当您只需要小时和分钟时,请为每列使用两列,而不是这样:

Hour tinyint
Minute tinyint
Run Code Online (Sandbox Code Playgroud)