SQL查询在两个日期之间选择错误

AGM*_*aja 1 sql sql-server sql-server-2008

我正在努力处理SQL中的查询,因此需要您的帮助.此查询未提供我想要的确切结果.我需要提取两个日期之间的所有日期.

我尝试了两个查询:

SELECT a.MemberID,CONVERT(varchar(12), b.BirthDate, 101) AS BirthDate
FROM Members_Hired AS a
    INNER JOIN Members AS b
        ON a.ReferenceID = b.RecordID
WHERE (CONVERT(varchar(12), b.BirthDate, 101) >= '02/01/2013'
    and CONVERT(varchar(12), b.BirthDate, 101) <= '02/27/2013')
Run Code Online (Sandbox Code Playgroud)

SELECT a.MemberID,CONVERT(varchar(12), b.BirthDate, 101) AS BirthDate
FROM Members_Hired AS a
    INNER JOIN Members AS b
        ON a.ReferenceID = b.RecordID
WHERE (CONVERT(varchar(12), b.BirthDate, 101) BETWEEN '02/01/2013' and '02/27/2013')
Run Code Online (Sandbox Code Playgroud)

这给出了日期的结果'02/05/1990','02/17/1990'也.它只考虑月份和日期,而不是一年.

Kaf*_*Kaf 8

您应该比较日期而不是varchar值.更改您的where子句如下.另请注意,我在转换之前使用ISO格式(yyyymmdd)作为字符串日期,以确保它适用于任何文化.

b.birthdate between convert(date,'20130201' ) and 
                  convert(date, '20130227')
Run Code Online (Sandbox Code Playgroud)

  • 如果我可以使用非特定于文化的日期格式,我会给另一个upvote. (3认同)