选择两列中两个日期之间的记录

问题描述 投票:5回答:7

如何在两列中的两个日期之间选择记录?

Select * From MyTable Where 2009-09-25 is between ColumnDateFrom to ColumnDateTo

我有一个日期(2009-09-25),我喜欢选择时间范围ColumnDateFrom到ColumnDateTo的记录。

样品

记录1 ColumnDateFrom = 2009-08-01 AND ColumnDateTo = 2009-10-01

记录2 ColumnDateFrom = 2010-08-01 AND ColumnDateTo = 2010-10-01

如果我的输入日期是2009-09-28;然后我得到记录1

sql sql-server sql-server-2005 tsql
7个回答
6
投票

标准之间应该工作(T-SQL)。

SELECT * FROM MyTable WHERE @MYDATE BETWEEN ColumnDateFrom AND ColumnDateFrom

4
投票

如果我理解正确,试试这个:

SELECT
    *
    FROM MyTable 
    WHERE ColumnDateFrom <= '2009-09-25' AND ColumnDateTo >= '2009-09-25'

4
投票

试试这个:

SELECT * FROM MyTable WHERE '2009-09-25' BETWEEN ColumnDateFrom AND ColumnDateTo

1
投票
select * 
from MyTable 
where ColumnDateFrom <= '2009-09-25' 
    and ColumnDateTo >= '2009-09-25'

0
投票

MySQL的:

select * from MyTable where '2009-09-25' between ColumnDateFrom and ColumnDateTo

0
投票

只需删除“是”

Select * From MyTable 
Where '2009-09-25' Between ColumnDateFrom to ColumnDateTo

记得考虑时间portiomn如果列值中有日期和时间...(假设DateOnly()是一个从日期时间列中删除时间的函数)

Select * From MyTable 
Where '2009-09-25' Between DateOnly(ColumnDateFrom) 
                        To DateOnly(ColumnDateTo)

0
投票

这里是ms access vba的例子

"[LearningBegin]<= " & Format(eFilterBegin.Value, "\#mm\/dd\/yyyy\#") + " and [LearningEnd]>=" + Format(eFilterEnd.Value, "\#mm\/dd\/yyyy\#") + _
" or [LearningBegin]>= " & Format(eFilterBegin.Value, "\#mm\/dd\/yyyy\#") + " and [LearningEnd]<=" + Format(eFilterEnd.Value, "\#mm\/dd\/yyyy\#") + _
" or [LearningBegin] between " & Format(eFilterBegin.Value, "\#mm\/dd\/yyyy\#") + " and " + Format(eFilterEnd.Value, "\#mm\/dd\/yyyy\#") + " and [LearningEnd]<=" + Format(eFilterEnd.Value, "\#mm\/dd\/yyyy\#") + _
" or [LearningBegin] between " & Format(eFilterBegin.Value, "\#mm\/dd\/yyyy\#") + " and " + Format(eFilterEnd.Value, "\#mm\/dd\/yyyy\#") + " and [LearningEnd]>=" + Format(eFilterEnd.Value, "\#mm\/dd\/yyyy\#") + _
" or [LearningBegin] >= " & Format(eFilterBegin.Value, "\#mm\/dd\/yyyy\#") + " and [LearningEnd] between" & Format(eFilterBegin.Value, "\#mm\/dd\/yyyy\#") + " and " + Format(eFilterEnd.Value, "\#mm\/dd\/yyyy\#") + _
" or [LearningBegin] <= " & Format(eFilterBegin.Value, "\#mm\/dd\/yyyy\#") + " and [LearningEnd] between" & Format(eFilterBegin.Value, "\#mm\/dd\/yyyy\#") + " and " + Format(eFilterEnd.Value, "\#mm\/dd\/yyyy\#")
© www.soinside.com 2019 - 2024. All rights reserved.