如何在SQL中创建今天晚上9点的时间

时间:2016-10-12 14:36:26

标签: sql sql-server sql-server-2008 tsql

我正在努力获得smalldatetime值"今天晚上9点和#34;在查询中。我以为我可以用

DATEADD(HOUR, 21, CONVERT(date, GETDATE()))

但SQL Server不喜欢这样 - 我收到了错误

  

数据的日期函数dateadd不支持datepart小时   输入日期。

建议解决方法?

3 个答案:

答案 0 :(得分:5)

非常简单,只需在投放到date后将datetime投回date

因此,您将获得current_date 00:00:00,然后再添加21小时:

select dateadd(hh, 21, cast(cast(getdate() as date) as datetime))

答案 1 :(得分:2)

这是因为dateadd的第3个参数应该是日期时间类型,而不是日期。

SELECT DATEADD(HOUR, 21, CONVERT(datetime,CONVERT(date, GETDATE())))

答案 2 :(得分:0)

只需将21 / 24.0添加到今天的日期

magick convert image.png image.gif

第一部分 Select dateadd(day, datediff(day, 1, getDate()), 1) + (21 / 24.0) ,从getdate(),

中删除时间

第二部分dateadd(day, datediff(day, 1, getDate()), 1),添加等于上午9点的小部分

这有效,因为在内部,SQL Server将日期时间表示为两个整数,一个表示日期,(自1900年1月1日以来的天数),以及该时间的第二个整数(自午夜以来+ (21 / 24.0)的数量) ,它组合成一个十进制值,其中整数部分是日期整数,小数部分是一天的分数,所以如果你在一个日期加上0.5,你就会在当天中午等等。

或者,为了进行比较,使用ticks几个小时,

dateadd