Sql Sybase-使用当前日期高效筛选记录

Sql Sybase-使用当前日期高效筛选记录,sql,sybase,Sql,Sybase,我正在尝试根据当前日期(仅日期部分)和“date_sent”列(日期时间数据类型)筛选记录。虽然可以用多种方式编写,但我想知道哪种方法最有效。该表在任何给定时间都有1100-1200万条记录 假设当前日期为2018年4月16日 SELECT * FROM TABLE_NAME WHERE datepart(YEAR, date_sent) = 2018 AND datepart(MONTH,date_sent) = 4 AND datepart(DAY,date_sent) = 16;

我正在尝试根据当前日期(仅日期部分)和“date_sent”列(日期时间数据类型)筛选记录。虽然可以用多种方式编写,但我想知道哪种方法最有效。该表在任何给定时间都有1100-1200万条记录

假设当前日期为2018年4月16日

SELECT *
FROM TABLE_NAME
WHERE datepart(YEAR, date_sent) = 2018
  AND datepart(MONTH,date_sent) = 4
  AND datepart(DAY,date_sent) = 16;

任何其他建议。

我将从以下内容开始:

select *
from table_name
where date_sent >= dateadd(day, datediff(day, 0, getdate()), 0) and
      date_sent < dateadd(day, 1 + datediff(day, 0, getdate()), 0)

dateadd和datediff函数给出了错误、错误的参数数量或类型。我不关心这个问题,因为我对你的建议有不同的想法。“从datediff(day,date_sent,getdate())=0的表名中选择*这会给我期望的结果。您认为这会索引date\u sent吗?不,使用
date\u sent
作为
datediff()
的参数不会在列上使用索引。谢谢您格式化@an33sh
select *
from table_name
where date_sent >= dateadd(day, datediff(day, 0, getdate()), 0) and
      date_sent < dateadd(day, 1 + datediff(day, 0, getdate()), 0)
select *
from table_name
where date_sent >= dateadd(day, datediff(day, cast('2000-01-01' as date), getdate()), cast('2000-01-01' as date)) and
      date_sent < dateadd(day, 1 + datediff(day, cast('2000-01-01' as date), getdate()), cast('2000-01-01' as date))