TSQL,如何在两个smalldatetime时间之间获得smalldatetime时间?

时间:2010-06-16 08:18:48

标签: sql sql-server-2005 tsql

我有两个smalldatetime列的表,其中一个是startTime,另一个是endTime。 我需要从表中选择所有值,两列之间的时间与getdate()'时间相比。

我正在使用SQL-Server 2005。

例如

  • startTime endTime value1
  • 2/2 / 01 16:00 2/2 / 01 18:00 1
  • 2/2 / 01 21:00 2/2 / 01 22:00 2
  • 2/2 / 01 05:00 2/2 / 01 22:00 3

选择getdate()给出2/2 / 03 21:40 时间是唯一重要的因素

所以我需要得到2和3

提前致谢

4 个答案:

答案 0 :(得分:1)

怎么样

SELECT *
FROM TABLE
WHERE getdate() BETWEEN startDate AND endDate

修改

你应该在这个链接上找到一个

并尝试Date/Time Conversions Using SQL Server

之类的内容
DECLARE @Table TABLE(
        startDate smalldatetime,
        endDate smalldatetime,
        value1 int
)

INSERT INTO @Table SELECT '02 Feb 2010 16:01', '02 Feb 2010 18:00', 1
INSERT INTO @Table SELECT '02 Feb 2010 21:00', '02 Feb 2010 22:00', 2
INSERT INTO @Table SELECT '02 Feb 2010 05:00', '02 Feb 2010 22:00', 3

DECLARE @MyGetDate DATETIME

SELECT @MyGetDate = '2 Mar 2003 21:40'

SELECT  * 
FROM @Table
WHERE convert(varchar, @MyGetDate, 14) BETWEEN convert(varchar, startDate, 14) AND convert(varchar, endDate, 14)

答案 1 :(得分:1)

    SELECT value1
      FROM tableA
     WHERE CONVERT(varchar, GETDATE(), 108) 
   BETWEEN CONVERT(varchar, Table_1.StartDate, 108) 
       AND CONVERT(varchar, Table_1.EndDate, 108);

应该做的伎俩

答案 2 :(得分:0)

和CONVERT(varchar,Table.column,113)    2016年6月6日星期四14:00:00:000'和'2016年6月7日08:00:00:000'

答案 3 :(得分:0)

如果这可能对任何人都有帮助,我正在提供一种我用来获取所述值的解决方案-

我的表'mw_shift'看起来像这样-

enter image description here

注意:“ ftime”和“ ttime”列的时间为TIME(数据类型)

现在,以下选择命令将为您提供所需的值-

select name from mw_shift where CONVERT(time,'10:32:00') between ftime and ttime 

select name from mw_shift where CONVERT(time,'20:32:00') between ftime and ttime 

select name from mw_shift where CONVERT(time,'00:32:00') between ftime and ttime