如何在 SQL Server 中将日期和时间与日期时间相结合?

ber*_*d_k 6 sql-server

我刚刚找到了以下代码:

CREATE FUNCTION dbo.JoinDateAndTime
(
    @d datetime,
    @t datetime
)
RETURNS Datetime
as
    BEGIN
        declare @res datetime
        set @res = convert (datetime, Convert(varchar(10), @d, 104) + ' ' + convert(varchar(8), @t, 108), 104)
        return @res
    END
go
Run Code Online (Sandbox Code Playgroud)

在看到如何在没有时间部分的情况下获取当前日期的答案后,我确信涉及到 varchar 的转换不是最好的解决方案。

顺便说一句,我搜索了这个问题,但只找到了 mySql 的解决方案。

Dav*_*ett 9

时间部分是小数部分,日期部分是整数部分,所以如果你的日期真的只是一个日期(根本没有时间部分)而你的时间真的只是一个时间(根本没有日期部分),你可以简单地组合通过将它们加在一起。

例如:

SELECT CAST(40597 AS DATETIME), CAST(0.5 AS DATETIME)
SELECT CAST(40597 AS DATETIME) + CAST(0.5 AS DATETIME)
Run Code Online (Sandbox Code Playgroud)

顶部的 SELECT 显示代表今天和中午 12 点的值,第二行将它们相加以形成一个代表今天中午 12 点的值。