3

'hi'現在の時刻(format )を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

SqlServer2008のtimeデータ型は次のとおりです。

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