Sql server 如何查询日期和时间字段分开的数据库?

Sql server 如何查询日期和时间字段分开的数据库?,sql-server,tsql,Sql Server,Tsql,在表中,时间和日期字段是两个独立的字段。我需要进行类似这样的查询,将日期和时间中的所有记录分解为日期组件和时间组件中的@givenDateTime,并使用和建立where子句: DECLARE @givenDate DATETIME SELECT @givenDate = DATEADD(dd, 0, DATEDIFF(dd, 0, @givenDateTime)) DECLARE @givenTime DATETIME SELECT @givenTime = CONVERT(varch

在表中,时间和日期字段是两个独立的字段。我需要进行类似这样的查询,将日期和时间中的所有记录分解为日期组件和时间组件中的
@givenDateTime
,并使用
建立
where
子句:

DECLARE @givenDate DATETIME 
SELECT @givenDate = DATEADD(dd, 0, DATEDIFF(dd, 0, @givenDateTime))

DECLARE @givenTime DATETIME 
SELECT @givenTime =  CONVERT(varchar(2),
      CASE
           WHEN DATEPART([hour], @givenDateTime) > 12 THEN CONVERT(varchar(2), (DATEPART([hour], @givenDateTime) - 12))
           WHEN DATEPART([hour], @givenDateTime) = 0 THEN '12'
           ELSE CONVERT(varchar(2), DATEPART([hour], @givenDateTime))
      END
 ) + ':' +
 CONVERT(char(2), SUBSTRING(CONVERT(char(5), @givenDateTime, 108), 4, 2)) + ' ' +
 CONVERT(varchar(2),
      CASE
           WHEN DATEPART([hour], @givenDateTime) > 12 THEN 'PM'
           ELSE 'AM'
      END
 ) 

SELECT * FROM myTable
WHERE tableDate <= @givenDate AND tableTime <= @givenTime
DECLARE@givendatetime
选择@givenDate=DATEADD(dd,0,DATEDIFF(dd,0,@givenDateTime))
声明@givenTime DATETIME
选择@givenTime=CONVERT(varchar(2),
案例
当DATEPART([hour],@givenDateTime)>12时,则转换(varchar(2),(DATEPART([hour],@givenDateTime)-12))
当DATEPART([hour],@givenDateTime)=0时,则为“12”
ELSE转换(varchar(2),DATEPART([hour],@givenDateTime))
结束
) + ':' +
转换(字符(2),子字符串(转换(字符(5),@givendateime,108),4,2))+“”+
转换(varchar(2),
案例
当DATEPART([hour],@givenDateTime)>12时,则为'PM'
其他“AM”
结束
) 
从myTable中选择*

其中tableDate将
@givenDateTime
分解为日期组件和时间组件,并使用
构建
WHERE
子句:

DECLARE @givenDate DATETIME 
SELECT @givenDate = DATEADD(dd, 0, DATEDIFF(dd, 0, @givenDateTime))

DECLARE @givenTime DATETIME 
SELECT @givenTime =  CONVERT(varchar(2),
      CASE
           WHEN DATEPART([hour], @givenDateTime) > 12 THEN CONVERT(varchar(2), (DATEPART([hour], @givenDateTime) - 12))
           WHEN DATEPART([hour], @givenDateTime) = 0 THEN '12'
           ELSE CONVERT(varchar(2), DATEPART([hour], @givenDateTime))
      END
 ) + ':' +
 CONVERT(char(2), SUBSTRING(CONVERT(char(5), @givenDateTime, 108), 4, 2)) + ' ' +
 CONVERT(varchar(2),
      CASE
           WHEN DATEPART([hour], @givenDateTime) > 12 THEN 'PM'
           ELSE 'AM'
      END
 ) 

SELECT * FROM myTable
WHERE tableDate <= @givenDate AND tableTime <= @givenTime
DECLARE@givendatetime
选择@givenDate=DATEADD(dd,0,DATEDIFF(dd,0,@givenDateTime))
声明@givenTime DATETIME
选择@givenTime=CONVERT(varchar(2),
案例
当DATEPART([hour],@givenDateTime)>12时,则转换(varchar(2),(DATEPART([hour],@givenDateTime)-12))
当DATEPART([hour],@givenDateTime)=0时,则为“12”
ELSE转换(varchar(2),DATEPART([hour],@givenDateTime))
结束
) + ':' +
转换(字符(2),子字符串(转换(字符(5),@givendateime,108),4,2))+“”+
转换(varchar(2),
案例
当DATEPART([hour],@givenDateTime)>12时,则为'PM'
其他“AM”
结束
) 
从myTable中选择*

其中tableDate可以简单地添加日期时间值

请注意,这可能不是特区政府能够做到的

这里我假设一列是SQLServer2008日期,一列是时间

-- Datetime Combination Example 
SELECT CAST(dt AS datetime) + CAST(tm AS datetime) AS dtm
FROM (
    SELECT CAST('6/7/2010' AS DATE) AS dt, CAST('12:34:00' AS TIME) AS tm
) AS X
如果它们都是日期时间:

SELECT dt + tm AS dtm
FROM (
    SELECT CAST('6/7/2010' AS DATETIME) AS dt, CAST('12:34:00' AS DATETIME) AS tm
) AS X

您可以简单地添加日期时间值

请注意,这可能不是特区政府能够做到的

这里我假设一列是SQLServer2008日期,一列是时间

-- Datetime Combination Example 
SELECT CAST(dt AS datetime) + CAST(tm AS datetime) AS dtm
FROM (
    SELECT CAST('6/7/2010' AS DATE) AS dt, CAST('12:34:00' AS TIME) AS tm
) AS X
如果它们都是日期时间:

SELECT dt + tm AS dtm
FROM (
    SELECT CAST('6/7/2010' AS DATETIME) AS dt, CAST('12:34:00' AS DATETIME) AS tm
) AS X
使用您的数据模型:

select  DateField, 
        TimeField 
from    Table1 
where   (DateField < '07/26/2009')
    or  (DateField = '07/26/2009' and TimeField <= '16:26:20')
对于SQL Server 2005,您可能需要对数据模型进行一些转换。

select  DateField, 
        TimeField 
from    Table1 
where   (DateField < '07/26/2009')
    or  (DateField = '07/26/2009' and TimeField <= '16:26:20')

对于SQL Server 2005,您可能需要进行一些转换。

字段是以纯文本形式存储还是以实际日期列存储?如果是,时间字段存储的日期是什么?字段存储为纯文本还是实日期列?如果是,时间字段存储的日期是什么?我已经这样做了,但结果不准确。请参阅上面编辑的问题“正在工作”。唯一的问题是我必须在时间字段中用时间传递日期。类似这样的内容:-从表1中选择DateField,其中DateField我已经这样做了,但结果不准确。请参阅上面编辑的问题“正在工作”。唯一的问题是我必须在时间字段中用时间传递日期。如下所示:-从表1中选择DateField和TimeField,其中DateField