【问题标题】:Filter on date and time in MS Access query with datetime values使用日期时间值过滤 MS Access 查询中的日期和时间
【发布时间】:2020-10-23 01:09:45
【问题描述】:

例如,我想在前天晚上 10 点到昨天晚上 10 点之间检索数据库中的所有内容。截至目前(2020 年 7 月 2 日下午 2:00:00),我拥有这种格式。

【问题讨论】:

  • 你的答案很不清楚。确切的时间段是多少?

标签: sql date ms-access time filter


【解决方案1】:
Assuming table1 as table and col1 as column

declare @yesterday datetime
SELECT @yesterday=DATEADD(millisecond,DATEDIFF(millisecond, 0, (SELECT 
                  CONVERT(TIME,'22:00:00.000')) ),CAST( (convert(date, 
                  dateadd(day,datediff(day,1, GETDATE()),0)))  AS DATETIME));

declare @daybeforeyesterday datetime
SELECT @daybeforeyesterday=DATEADD(millisecond
                           ,DATEDIFF(millisecond, 0, (SELECT CONVERT(TIME,'22:00:00.000')) 
                           ),CAST( (convert(date, dateadd(day,datediff(day,2, 
                           GETDATE()),0)))  AS DATETIME));

select * from table1 where col1 between @yesterday and @daybeforeyesterday

【讨论】:

  • 此语法在 MS Access 中不可编译,与 SQL Server 不同的数据库和方言。
【解决方案2】:

使用Date()(从午夜开始时间,'00:00:00')和CDate(注意时间格式对于相同的值可能不同,例如10 PM vs @987654324)简单地添加日期和时间元素@)。

SELECT ...
FROM myTable
WHERE myDate BETWEEN (Date() - 2) + CDate('10 PM')
                 AND (Date() - 1) + CDate('22:00')

【讨论】:

    【解决方案3】:

    计算小时差异并使用DateAdd

    Select *
    From YourTable
    Where YourDateField Between
        DateAdd("h", -26, Date()) And DateAdd("h", -2, Date())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-09
      • 2019-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-27
      相关资源
      最近更新 更多