1

SQLでのクエリに苦労しているので、あなたの助けが必要です。このクエリでは、必要な正確な結果が得られません。2 つの日付の間のすべての日付を引き出​​す必要があります。

私は2つのクエリを試しました:

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')

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')

これにより、日付の結果'02/05/1990'も得られます'02/17/1990'。正確な年ではなく、月と日のみを考慮します。

4

3 に答える 3

8

varchar 値ではなく日付を比較する必要があります。where 句を次のように変更します。また、変換前に文字列の日付に ISO 形式 (yyyymmdd) を使用して、どのカルチャでも機能することを確認していることにも注意してください。

b.birthdate between convert(date,'20130201' ) and 
                  convert(date, '20130227')
于 2013-02-25T23:18:46.043 に答える
2

日時ではなく文字列を比較していると思うので、結果には「02/25」と「02/17」というレコードが含まれます。

于 2013-02-25T23:18:07.157 に答える
1

DateTime生年月日フィールドが入力を同じ型に変換する必要がある型であると仮定します。

試しましたか?

WHERE (b.BirthDate BETWEEN Cast('02/01/2013' As DateTime) and Cast('02/27/2013' As DateTime))
于 2013-02-25T23:22:58.357 に答える