使用SQL Server2008。我有一个存储的proc,它具有开始和结束日期作为日期范围的输入参数。
在where子句中查找在开始日期和结束日期之间有一个sql查询的 单个 sql查询,该查询可以处理日期均为null或都具有值的两种情况。
我不想使用IF语句。
WITH limits AS
(
SELECT COALESCE(@startDate, MIN(mydate)) AS startDate, COALESCE(@endDate, MAX(mydate)) AS endDate
FROM mytable
)
SELECT m.*
FROM limits
JOIN mytable m
ON mydate BETWEEN startDate AND endDate
如果存在索引mydate
,这将是最有效的,因为此条件是可保留的,并且将使用Index Seek
。
如果没有索引,则使用IFNULL
其他人提出的构造。
问题内容: 我有一个具有以下结构的表:ID,Month,Year,Value,每个ID每个月一个条目的值,大多数月份都具有相同的值。 我想为该表创建一个视图,该视图折叠如下所示的相同值:ID,开始月,结束月,开始年,结束年,值,每个值每个ID一行。 要注意的是,如果值发生变化然后又回到原始值,则表中应该有两行 所以: 100 1 2008 80 100 2 2008 80 100 3 2008 9
问题内容: 最近我被告知,在SQL中使用该方法有些不可靠,因此我应该使用。但是,另一位程序员告诉我不是这种情况,只要日期格式正确,该方法就可以在所有情况下出色地工作。 请有人通过说明哪种方法更好以及为什么来解决这场辩论。 目前,我的日期范围SQL如下所示: 但是,如果可以确定它是可靠的,我宁愿这样写: 在这种情况下,我使用的是MsSQL,但是我已经标记了MySQL,因为我想知道这在这里是否也适用
我怀疑我的SQL。 请找到查询 输出显示properly.currently我得到firstname和lastname。但对于某些条目,名和姓为空。我需要修改查询,以便我可以打印列的非空值if(last_id!=0和date(活动)=date(start_date),CONCAT(ag.firstname ,' ‘, ag.lastname ) ,’') 相同的查询,不包括名和姓的空条目。我尝试了
问题内容: 我有一个和。我想获取这两个日期之间的日期列表。谁能帮助我指出查询中的错误。 这是一个变量。 问题答案: 您应该将这两个日期放在单引号之间,例如。 或可以使用 请记住,第一个日期是包含日期,但第二个日期是排除日期,因为它实际上是“ 2011/02/27 00:00:00”
问题内容: 如果我有一个表列,,, 并且我想运行一个sql查询以获取数据集中最早的记录。 您可以在查询中执行此操作,还是需要在事实之后循环? 我想获取该记录的所有字段。 问题答案: 如果您只想要日期: 如果您需要所有信息: 尽可能避免循环。循环通常会导致游标,游标几乎从来没有必要,而且常常效率很低。
问题内容: 在使用SQL时,我是一个新手,我想做的是仅使用月份和年份选择waterUsage和lectriccityUsage,然后从上一年中选择waterUsage和lectriccityUsage。 但是,我似乎无法找出使用日期的适当方法来完成这项工作。 表:每月帐单 或者 问题答案: 一种选择是使用: 假设您实际上使用的是Oracle,而不是SQL Server。 如果需要,然后继续,然后在