【问题标题】:to get records between yesterday's 3pm to today's 3pm sql server获取昨天下午 3 点到今天下午 3 点之间的记录 sql server
【发布时间】:2016-09-29 05:28:34
【问题描述】:

我有一个带有 datetime 列的表,我使用 select 语句提取记录,我不确定“where”部分我只想要从昨天下午 3 点到今天下午 3 点的 sql 服务器的记录。请帮忙。

【问题讨论】:

  • 阅读between
  • 谢谢 Jens,但我不确定时间部分。

标签: sql sql-server datetime where clause


【解决方案1】:

您可以使用GETDATE() 获取今天和GETDATE() - 1 获取昨天的日期。 然后,您可以删除时间部分并添加 15 小时,即两个日期的下午 3 点。

SELECT * FROM tableName
WHERE dateColumn BETWEEN DATEADD(hh,15,DATEADD(dd,DATEDIFF(dd,0,GETDATE()-1),0))
AND DATEADD(hh,15,DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0))

【讨论】:

  • 感谢我调整了逻辑并让它对我有用。我必须在今天早上 7 点到下午 3 点之间修改文档。 SELECT * FROM workorder WHERE 1=1 and statusdate BETWEEN DATEADD(hh,7,DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0)) 和 DATEADD(hh,15,DATEADD(dd,DATEDIFF(dd, 0,GETDATE()),0))
【解决方案2】:

当你想用时间指定日期时,你必须在ISO 8601 standard中指定日期时间文字

SQLServer 2000 及更高版本支持 ISO 8601。

日期时间的 ISO 8601 标准是:YYYY-MM-DDThh:mm:ss.nnn[Z]

CREATE TABLE #testingTime(a int, timeofinsert datetime)
INSERT INTO #testingTime
values (1, '2016-09-28T17:05:00'),
(2,'2016-09-29T14:05:00'),
(3,'2016-09-29T18:05:00')

SELECT * FROM #testingTime WHERE timeofinsert 
> '2016-09-28T15:00:00' AND timeofinsert < ='2016-09-29T15:00:00'

关于昨天和今天下午 3 点的具体问题。您可以使用以下代码:

CREATE TABLE #testingTime(a int, timeofinsert datetime)
INSERT INTO #testingTime
values (1, '2016-09-27T17:05:00'),
(2,'2016-09-28T14:05:00'),
(3,'2016-09-28T18:05:00')


DECLARE @yesterday3PM datetime = convert(varchar(10),convert(date,getdate()-1)) + 'T15:00:00'
DECLARE @today3PM datetime = convert(varchar(10),convert(date,getdate())) + 'T15:00:00'

select @yesterday3PM, @today3PM
SELECT * FROM #testingTime WHERE timeofinsert 
> @yesterday3PM AND timeofinsert < = @today3PM 

【讨论】:

    【解决方案3】:

    DATEADD(D,-1,GETDATE()):给你最后的日期

    DATEADD(HOUR,.....):将增加 15 小时(需要下午 3:00,因此增加了 15 小时)

    SELECT
        *
    FROM TableName E
    WHERE 
    E.BirthDate>=DATEADD(HOUR,15, CAST(CAST(DATEADD(D,-1,GETDATE()) AS Date) AS datetime))
    AND E.BirthDate<=DATEADD(HOUR,15, CAST(CAST(GETDATE() AS Date) AS datetime))
    

    【讨论】:

    • 考虑为他人的利益解释您的代码,那里有一些复杂性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-23
    • 2016-12-04
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 2013-11-27
    相关资源
    最近更新 更多