SQL Server Construct DateTime using today's date at a specific time

xfb7svmp  于 2023-10-15  发布在  其他
关注(0)|答案(4)|浏览(122)

I'd like to get 4:30 PM of the current day. Hard-coding this way doesn't work:

SELECT '07242012 16:30:00.000'

This is proving to be more difficult than I thought it would be. How do I approach this?

yrdbyhpb

yrdbyhpb1#

SQL Server 2012+

DECLARE @d date = CURRENT_TIMESTAMP;
SELECT SMALLDATETIMEFROMPARTS
(
  YEAR(@d), MONTH(@d), DAY(@d), 16, 30
);

SQL Server 2008/2008 R2:

DECLARE @d date = CURRENT_TIMESTAMP;
SELECT DATEADD(MINUTE, 16.5*60, CONVERT(datetime,@d));

SQL Server 2000 / 2005:

SELECT DATEADD(MINUTE, 16.5*60, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP));

-- or

SELECT CONVERT(DATETIME, CONVERT(CHAR(9), CURRENT_TIMESTAMP, 112) + '16:30');

-- or

SELECT DATEADD(MINUTE, 16.5*60, {fn curdate()});
8nuwlpux

8nuwlpux2#

Probably the easiest thing to do is to cast the current date/time to a date (stripping the time off), cast it back to a datetime to allow use of datetime's overloaded + (plus) and, finally cast your desired textual time to a datetime. As follows:

select cast(cast(sysutcdatetime() as date) as datetime) + cast('16:30' as datetime)

returns (when run on 11th Jan 2018):

2018-01-11 16:30:00.000
nr9pn0ug

nr9pn0ug3#

You can construct this as you like with day, hour, minute etc.

SELECT CURDATE() - interval 1 DAY + interval 2
7d7tgy0s

7d7tgy0s4#

select(dateadd(day, datediff(day, 0, getdate()), 0) + '20:00') as specified_date

specified_date - Output Column name

20:00 - Specified time(24 hr Format -Default)

getdate() - To get Today's date.

相关问题