3

我需要将当前时间(格式'hi')作为 char(4) 存储在表中(由另一个程序创建和使用,我无法更改它),现在想知道什么是通过 SQL 检索它的合适方法。我知道 MySQL 不是那种面向标准的,但我认为它可能类似于DATE_FORMAT(NOW(), 'Hi').
我发现的下面的代码,但感觉并不复杂。

SELECT CAST(DATEPART(hour, GETDATE()) AS nvarchar)+CAST(DATEPART(minute, GETDATE()) AS nvarchar);

有没有更好的方法来实现这一目标?

4

2 回答 2

3

以下给出了相同的结果:

SELECT LEFT(STUFF(CONVERT(NCHAR(8), GETDATE(), 8), 3, 1,''), 4)

它似乎与问题中的方法具有大致相同的性能。我是这样测试的:

DECLARE @i INT = 0,
        @dto1 DATETIME2,
        @dto2 DATETIME2

SET @dto1 = SYSDATETIME()
WHILE @i < 100000
BEGIN
    PRINT LEFT(STUFF(CONVERT(NCHAR(8), GETDATE(), 8), 3, 1,''), 4)
    SET @i = @i + 1
END 
SET @dto2 = SYSDATETIME()

SELECT DATEDIFF(MILLISECOND, @dto1, @dto2)
于 2012-07-13T11:26:04.927 回答
3

Sql Server 2008 有一个time数据类型:

select replace(left(cast(getdate() as time), 5), ':', '')
于 2012-07-13T11:53:37.853 回答