sqlserver上的sql日期时间

sqlserver上的sql日期时间,sql,sql-server,Sql,Sql Server,在表上具有修改的字段列。 当我在下午2:45运行作业时,我希望首先获取在凌晨3:30之后修改的数据 当我在凌晨3:30运行同一个作业时,我想获取昨天下午2:45之后修改的数据 如何在sql server上为此编写sql 员工表 名称 年龄 大街 城市 状态 Zipcode 创建日期 创建于 修改日期 修改 今天如果我在凌晨3:30运行这个sql,我想获取在昨天下午2:45之后被修改的数据 今天,如果我在下午2:45运行此sql,我想获取在凌晨3:30之后被修改的数据 希望我很清楚我在找什么。听起

在表上具有修改的字段列。 当我在下午2:45运行作业时,我希望首先获取在凌晨3:30之后修改的数据

当我在凌晨3:30运行同一个作业时,我想获取昨天下午2:45之后修改的数据

如何在sql server上为此编写sql

员工表 名称 年龄 大街 城市 状态 Zipcode 创建日期 创建于 修改日期 修改

今天如果我在凌晨3:30运行这个sql,我想获取在昨天下午2:45之后被修改的数据

今天,如果我在下午2:45运行此sql,我想获取在凌晨3:30之后被修改的数据

希望我很清楚我在找什么。

听起来像是你想要一个负值的DATEADD

select
*
from YourTable
where YourDateTimeColumn >= dateadd(minute,-1395,getdate())
如果要使用变量来确保0300

declare @date datetime = (select cast(cast(getdate() as date) as varchar) + ' 03:30:00')

select @date

    select
    *
    from YourTable
    where YourDateTimeColumn >= dateadd(minute,-1395,@date)

你能为你的问题添加一些样本数据和表格结构吗?你确定你应该自己构建这个吗?SQL Server变更跟踪、变更数据捕获等内置了各种功能,用于实现这类功能;并且倾向于具有更好的粒度,例如,您知道您已经/没有看到哪些行-根据您当前的提案,如果您在凌晨3:30运行,您可能会看到一些已经在凌晨3:30插入的行,但可能还有其他尚未插入的行,这些行也将被时间戳为凌晨3:30。对于计算机来说,一分钟甚至一秒钟都是非常长的时间。编辑我的问题这假设作业在它应该运行的时候运行,并且没有以任何方式延迟这不起作用。有什么变化吗?由于关键字“as”附近的语法不正确而获取错误缺少括号。请立即重试谢谢,为了快速响应,但仍然会在关键字“as”附近出现错误,因为语法不正确。--使用sql server 2008抱歉,请忽略上面的错误,因为操作数数据类型日期对于add Operator策略无效,请立即重试。
select *
from table
where Modified > case when cast(getdate() as time) < '14:45:00'
                      then dateadd(day,datediff(day,0,getdate())-1,0) + cast('14:45:00' as datetime)
                      else dateadd(day,datediff(day,0,getdate()),0) + cast('03:30:00' as datetime)
                      end