如何在SQL中将当前日期显示为截止于3:00:00AM的当前日期

如何在SQL中将当前日期显示为截止于3:00:00AM的当前日期,sql,sql-server,Sql,Sql Server,我有一个任务,我需要将当前日期时间显示为当前日期凌晨3:00:00结束。例如,GETDATE在执行时返回当前日期时间。我需要显示为2019年9月5日凌晨3:00:00。下面是我的代码: DECLARE @END_SHIFT AS DATETIME SET @END_SHIFT = '06:00:00 AM' SELECT NUMBER_ID, GETDATE() AS CURRENT_DT, GETDATE() - @END_SHIFT AS END_SHIFT_

我有一个任务,我需要将当前日期时间显示为当前日期凌晨3:00:00结束。例如,GETDATE在执行时返回当前日期时间。我需要显示为2019年9月5日凌晨3:00:00。下面是我的代码:

DECLARE @END_SHIFT AS DATETIME
SET @END_SHIFT = '06:00:00 AM'

SELECT 
NUMBER_ID, 
GETDATE()              AS CURRENT_DT,
GETDATE() - @END_SHIFT AS END_SHIFT_DATE
FROM table
运行此命令时,我的问题是它不会返回到凌晨3:00:00结束。请告诉我你的方向

谢谢,
H

如果你真的需要一段艰难的时间,一个选择是使用格式

范例

返回


如果你真的需要一段时间,一个选择是使用格式

范例

返回


当然,这是一个有点奇怪的请求,但您可以简单地使用DATEADD

SELECT dateadd(hour, 3, convert(datetime, convert(date, getdate())))

当然,这是一个有点奇怪的请求,但您可以简单地使用DATEADD

SELECT dateadd(hour, 3, convert(datetime, convert(date, getdate())))

如果要存储一天中的时间,请使用时间类型,而不是日期时间。至于这个请求,至少可以说是不寻常的。GetDate是GetDate。为什么它要返回一些固定值?如果要使用固定值设置变量或将其存储在字段中,是否还要报告移动了3小时的时间,还是只报告日期?SQL Server非常适合显示数据库中的内容。开发完整的应用程序通常不首选它。最好的方法可能是从表中选择number_id、getdate作为当前_dt,并让应用程序(可能是web应用程序、Perl脚本、C控制台应用程序)显示它需要显示的内容。换句话说,我不确定您在这里是否有SQL问题。@Tim,需要的时间从当前日期和时间的凌晨3:00结束。如果要存储一天中的时间,请使用时间类型,而不是日期时间。至于这个请求,至少可以说是不寻常的。GetDate是GetDate。为什么它要返回一些固定值?如果要使用固定值设置变量或将其存储在字段中,是否还要报告移动了3小时的时间,还是只报告日期?SQL Server非常适合显示数据库中的内容。开发完整的应用程序通常不首选它。最好的方法可能是从表中选择number_id、getdate作为当前_dt,并让应用程序(可能是web应用程序、Perl脚本、C控制台应用程序)显示它需要显示的内容。换句话说,我不确定您在这里是否有SQL问题。@Tim,需要从当前日期和时间的凌晨3:00结束时间。但这不是日期时间;这是一根绳子但这不是约会时间;这是一根绳子
SELECT dateadd(hour, 3, convert(datetime, convert(date, getdate())))