50

我正在尝试在 SQL Server 2008 R2 中将自定义时间添加到日期时间

以下是我尝试过的。

SELECT DATEADD(hh, 03, DATEADD(mi, 30, DATEADD(ss, 00, DATEDIFF(dd, 0,GETDATE())))) as Customtime

使用上面的查询,我能够实现它。

但是是否有任何速记方法可以将自定义时间添加到日期时间?

4

10 回答 10

67

尝试这个

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '03:30:00')
于 2013-07-03T09:58:12.477 回答
43

对我来说,这段代码看起来更明确:

CAST(@SomeDate AS datetime) + CAST(@SomeTime AS datetime)
于 2015-06-25T15:12:43.003 回答
20

尝试这个:

SELECT  DATEDIFF(dd, 0,GETDATE()) + CONVERT(DATETIME,'03:30:00.000')
于 2013-07-03T09:59:04.023 回答
8

尝试这个

SELECT DATEADD(MINUTE,HOW_MANY_MINUTES,TO_WHICH_TIME)

MINUTE是常数,表示 er 将从TO_WHICH_TIME说明符中添加/减去分钟。HOW_MANY_MINUTES是我们需要添加分钟的间隔,如果指定为负,则将减去时间,否则将添加到说明TO_WHICH_TIME符中,并且TO_WHICH_TIME是您要添加的原始时间MINUTE

希望这可以帮助。

于 2014-02-26T06:41:01.420 回答
5

或者尝试使用 Time 数据类型的替代方法:

DECLARE @MyTime TIME = '03:30:00', @MyDay DATETIME = CAST(GETDATE() AS DATE)

SELECT @MyDay+@MyTime
于 2013-07-03T17:00:31.260 回答
3

你可以做:

SELECT GETDATE()+'03:30:00'
于 2018-11-26T12:17:06.077 回答
0

以下内容很简单,适用于 SQL Server 2008 (SP3) 及更高版本:

PRINT @@VERSION
PRINT GETDATE()
PRINT GETDATE() + '01:00:00'
PRINT CONVERT(datetime,FLOOR(CONVERT(float,GETDATE()))) + '01:00:00'

带输出:

Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64) 
Mar 15 2017  6:17PM
Mar 15 2017  7:17PM
Mar 15 2017  1:00AM
于 2017-03-15T16:26:39.213 回答
0
DECLARE @DDate      date        -- To store the current date
DECLARE @DTime      time        -- To store the current time
DECLARE @DateTime   datetime    -- To store the result of the concatenation
;
SET @DDate      =   GETDATE()   -- Getting the current date
SET @DTime      =   GETDATE()   -- Getting the current time



SET @DateTime   =   CONVERT(datetime, CONVERT(varchar(19), LTRIM(@DDate) + ' ' + LTRIM(@DTime) ));
;
/*
    1. LTRIM the date and time do an automatic conversion of both types to string.
    2. The inside CONVERT to varchar(19) is needed, because you cannot do a direct conversion to datetime
    3. Once the inside conversion is done, the second do the final conversion to datetime.
*/  

-- The following select shows the initial variables and the result of the concatenation
SELECT @DDate, @DTime, @DateTime
于 2020-05-12T13:29:59.467 回答
0

您不需要分配时间、案例或任何其他东西。将时间转换为自午夜以来的秒数,然后将其添加到日期。这应该适用于支持 DATEADD 和 DATEDIFF 的任何 SQL 版本。

SELECT DATEADD(SECOND, DATEDIFF(SECOND, '00:00:00', '14:30:00'), '2021-01-01') AS 
COMBINED_DATETIME
于 2021-03-16T18:09:25.393 回答
-3

开始日时间:SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '00:00:00')

结束日时间:SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '23:59:59')

于 2015-01-15T09:48:33.497 回答