从datetime开始的TSQL剥离日期

t3r*_*rse 8 sql t-sql

从DATETIME 剥离日期的最佳方法是什么,所以只剩下时间进行比较?

我知道我可以做到以下几点:

CONVERT(DATETIME, CONVERT(VARCHAR(8), GETDATE(),8))
Run Code Online (Sandbox Code Playgroud)

但这涉及转换和字符.如果我想检查时间(包括分钟)是否存储在DATETIME列中的其他两次之间,是否有一种优雅的方法来执行此操作而不必依赖于转换为字符串?

Mik*_* M. 11

如果您使用的是SQL 2008

SELECT CAST(GETDATE() AS TIME)
Run Code Online (Sandbox Code Playgroud)


Jus*_*ner 10

尝试从Essential SQL Server Date,Time和DateTime函数中的TimeOnly函数:

create function TimeOnly(@DateTime DateTime)
returns datetime
as
    begin
    return dateadd(day, -datediff(day, 0, @datetime), @datetime)
    end
go
Run Code Online (Sandbox Code Playgroud)

或者只是在SQL Server 2008中将DateTime转换为时间:

declare @time as time
set @time = cast(dateTimeVal as time)
Run Code Online (Sandbox Code Playgroud)