1

システム日付が1日~15日、システム日付が16日~月末の場合、日付が1日~15日のデータを取得する方法月の16日から30日/31日までのデータを自動的に取得しますか?

私を助けてください。

私はこのコードを持っています。

SELECT 
    CONVERT(VARCHAR(11), DATEADD(DAY, DATEDIFF(DAY, 0, DateTimeIn), 0)) AS [Date],
    CONVERT(TIME(0),DateTimeIn) AS [Time In], CONVERT(TIME(0),DateTimeOut) AS [Time Out],
    Late, Undertime, AWOL, Leave 
FROM 
    tblAttendance2
WHERE 
    UserID = (SELECT UserID FROM tblUsers WHERE Username = @Username) 
    AND MONTH(DateTimeIn) = MONTH(GetDate())
ORDER BY 
    CONVERT(DATE, DateTimeIn, 101) ASC

これは、当月全体のデータを示しています。

ありがとう!

4

2 に答える 2

1

整数演算に頼って、非常に簡単に解決できます。

WHERE 
UserID = (SELECT UserID FROM tblUsers WHERE Username = @Username) 
AND DATEPART(month,DateTimeIn) = DATEPART(month,GetDate())
AND DATEPART(day,DateTimeIn)/16 = DATEPART(day,GetDate())/16

基本的に、0 ~ 15 の任意の数値を 16 で割ると、値は 0 になります。16 ~ 31 の任意の数値を 16 で割ると、値は 1 になります。

(また、私はスノッブなので、クエリに統合する前にデイコードを書いた方法であり、このメソッドの一貫性が好きなので、任意の日時部分を取得するために適用できるため、に切り替えましたが、 andに対応するものがありますが、取得する同様の関数はありません (例: 時間)DATEPART MONTHDAYYEAR

于 2013-11-15T10:04:49.290 に答える