sql - 比较日期而不考虑时间(MSSQL)

标签 sql stored-procedures

我使用这个存储过程从特殊日期返回数据。我的 QueueDate 类型是 datetime ,但是当我想在 Where Clause 中使用 = 它返回 0 时,我想要所有字段在一天中独立于字段时间。

ALTER PROCEDURE [dbo].[SP_GET_QUEUESINFO_BY_DATE]
AS
BEGIN
declare @date2 datetime
set @date2= '2012-09-21'
select COUNT(QueueID) ,
sum(case when QueueNumIn != 0 THEN 1 else 0 end) as 'InQueue',
sum(case when QueueNumOut != 0 THEN 1 else 0 end) as  'OutQueue'
from Queue where QueueDate >= @date2 -- QueueDate = @date2
END

enter image description here

最佳答案

您可以CAST 列名称以将数据类型从DATETIME 更改为DATE(2008+ 之前的版本).试试看,

ALTER PROCEDURE [dbo].[SP_GET_QUEUESINFO_BY_DATE]
AS
BEGIN
declare @date2 datetime
set @date2= '2012-09-21'
select COUNT(QueueID) ,
       sum(case when QueueNumIn != 0 THEN 1 else 0 end) as 'InQueue',
       sum(case when QueueNumOut != 0 THEN 1 else 0 end) as  'OutQueue'
from Queue 
where CAST(QueueDate as DATE) >= @date2 -- QueueDate = @date2
END

关于sql - 比较日期而不考虑时间(MSSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12534604/

相关文章:

接受用户日期范围并显示未解决错误列表的 Mysql 存储过程

mysql - 检查存储过程中的 select 语句是否返回行

Linq-to-SQL 如何防止使用 Delete 方法?

mysql - 用于在两个表中插入数据的存储过程

php - 查询生成器 : parameters in a loop

sql - 使用Python时如何在SQL查询中使用空字符串

mysql - 在 SQL 中插入多条记录,其中值是单个查询中定义范围的所有组合

mysql - 显示独立于 where 子句的所有连接结果

mysql - 截断并插入存储过程mysql

MYSQL:如何获取table1的具体数据以及获取table2和table3的最新数据