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

时间:2012-07-24 16:37:42

标签: sql-server sql-server-2008-r2

我想在当天下午4:30。这种硬编码不起作用:

SELECT '07242012 16:30:00.000'

事实证明这比我想象的要困难得多。我该如何处理?

4 个答案:

答案 0 :(得分:19)

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 +:

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

SQL Server 2012:

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

答案 1 :(得分:0)

最简单的做法可能是将当前日期/时间转换为日期(剥离时间),将其强制转换为日期时间以允许使用日期时间超载的+ (plus)和最后将您想要的文本时间投射到日期时间。如下:

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

返回(2018年1月11日运行时):

2018-01-11 16:30:00.000

答案 2 :(得分:0)

您可以根据需要构建日期,小时,分钟等。

'persen', 'eom', 'tgt_perpetugas' and 'tgt_pergeseran'

答案 3 :(得分:0)

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

指定日期-输出列名称

     

20:00-指定时间(24小时格式-默认)

     

getdate()-获取今天的日期。