我正在尝试在 SQL Server 2008 R2 中将自定义时间添加到日期时间。
以下是我尝试过的。
SELECT DATEADD(hh, 03, DATEADD(mi, 30, DATEADD(ss, 00, DATEDIFF(dd, 0,GETDATE())))) as Customtime
使用上面的查询,我能够实现它。
但是是否有任何速记方法可以将自定义时间添加到日期时间?
我正在尝试在 SQL Server 2008 R2 中将自定义时间添加到日期时间。
以下是我尝试过的。
SELECT DATEADD(hh, 03, DATEADD(mi, 30, DATEADD(ss, 00, DATEDIFF(dd, 0,GETDATE())))) as Customtime
使用上面的查询,我能够实现它。
但是是否有任何速记方法可以将自定义时间添加到日期时间?
尝试这个
SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '03:30:00')
对我来说,这段代码看起来更明确:
CAST(@SomeDate AS datetime) + CAST(@SomeTime AS datetime)
尝试这个:
SELECT DATEDIFF(dd, 0,GETDATE()) + CONVERT(DATETIME,'03:30:00.000')
尝试这个
SELECT DATEADD(MINUTE,HOW_MANY_MINUTES,TO_WHICH_TIME)
这MINUTE
是常数,表示 er 将从TO_WHICH_TIME
说明符中添加/减去分钟。HOW_MANY_MINUTES
是我们需要添加分钟的间隔,如果指定为负,则将减去时间,否则将添加到说明TO_WHICH_TIME
符中,并且TO_WHICH_TIME
是您要添加的原始时间MINUTE
。
希望这可以帮助。
或者尝试使用 Time 数据类型的替代方法:
DECLARE @MyTime TIME = '03:30:00', @MyDay DATETIME = CAST(GETDATE() AS DATE)
SELECT @MyDay+@MyTime
你可以做:
SELECT GETDATE()+'03:30:00'
以下内容很简单,适用于 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
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
您不需要分配时间、案例或任何其他东西。将时间转换为自午夜以来的秒数,然后将其添加到日期。这应该适用于支持 DATEADD 和 DATEDIFF 的任何 SQL 版本。
SELECT DATEADD(SECOND, DATEDIFF(SECOND, '00:00:00', '14:30:00'), '2021-01-01') AS
COMBINED_DATETIME
开始日时间:SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '00:00:00')
结束日时间:SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), '23:59:59')