使用特定时间的今天日期构造 DateTime

2022-01-16 00:00:00 sql-server sql-server-2008-r2

我想知道当天的下午 4:30.以这种方式硬编码是行不通的:

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?

推荐答案

SQL Server 2000/2005:

SQL Server 2000 / 2005:

SELECT DATEADD(MINUTE, 30, DATEADD(HOUR, 16, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP)));

-- or

SELECT DATEADD(MINUTE, (16*60) + 30, DATEDIFF(DAY, 0, CURRENT_TIMESTAMP))

-- or

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

SQL Server 2008+:

SQL Server 2008+:

SELECT CONVERT(DATETIME, CONVERT(DATE, CURRENT_TIMESTAMP)) + '16:30';

SQL Server 2012:

SQL Server 2012:

SELECT SMALLDATETIMEFROMPARTS(YEAR(GETDATE()), MONTH(GETDATE()), DAY(GETDATE()), 16, 30);

相关文章