GETUTCDATE但指定自定义时间

时间:2016-08-17 17:19:24

标签: sql sql-server time

我正在尝试编写一个自动化代码,我想使用当前日期,但时间必须是特定的。

SELECT
   col_name
FROM
   table
WHERE
   CONVERT(DATE, start_datetime) = CONVERT(date, GETUTCDATE())

我如何提及具体时间?

1 个答案:

答案 0 :(得分:0)

哇,花了我一分钟,我不理解你的问题。但我想你问的是如何指定今天的时间并将其与start_datetime值进行比较,以确定它们是否在同一时间。

问题将归结为你想要的准确程度。例如在特定时刻?在x#分钟内?秒.... ????

有很多方法可以回答这个问题。

第一个问题是你的start_datetime存储在哪个时区?因为如果你的start_date也不是UTC,你可能不想使用UTC日期!如果不是utc你的服务器设置的时区,GETDATE()和start_datetime是否在同一个区域?

在特定时间内今天的任何时间。

SELECT
   col_name
FROM
   table
WHERE
   CONVERT(DATE, start_datetime) = CONVERT(date, GETUTCDATE())
   AND HOUR(start_datetime) = 5

今天在特定时刻和分钟的任何时间

SELECT
   col_name
FROM
   table
WHERE
   CONVERT(DATE, start_datetime) = CONVERT(date, GETUTCDATE())
   AND DATEPRT(HOUR,start_datetime) = 5
   AND DATEPART(MINUTE,start_datetime) = 15

OR

SELECT
   col_name
FROM
   table
WHERE
   start_datetime = CAST(CAST(GETUTCDATE() AS DATE) AS DATETIME) + CAST('05:15' AS DATETIME)

OR

SELECT
   col_name
FROM
   table
WHERE
   start_datetime = CONVERT(DATETIME,(CONVERT(VARCHAR(10),GETUTCDATE(),120) + ' 19:15'))

对于秒,您可以使用与小时/分钟基本相同的技术,只为您要转换的字符串添加一秒或

在特定时间之后,只需将=切换为>