簡體   English   中英

sql簡單查詢日期

[英]sql simple Query with dates

我有一個時鍾應用程序,注冊雇員參加工作,

我試圖將“輸入” imageButton (入口,例如“Timein”字段)的可見性設置為基於查詢隱藏

因此,如果在當前UserId中具有TimeIn最后一條記錄中沒有timeout ,則將隱藏Enter按鈕

這是表:( tId是PK IDENTITY)

在此輸入圖像描述

所以基於這些記錄,例如,最后一個(前1個)沒有注銷,因此用戶不會看到允許用戶登錄的Enter button ,因為沒有TimeOut最后一個動作

使用asp.net C#代碼我正在嘗試使用datedIff作為查詢來解決方案:

但我想我錯過了一些東西

請不要考慮如果這是我想要展示的錯誤方法..我確實試過,如果有更好的方法來實現我需要的東西然后只是忽略該查詢

select isnull((SELECT TOP 1 case when [TimeOut] is null then '' else convert(nvarchar,[TimeOut]) end FROM tblTime WHERE datediff(day,TimeOut,getdate())=0 and UserId =3571 ORDER BY tId DESC),'')

這將找到userId具有最高tid的記錄。

SELECT CASE WHEN [TimeOut] IS NULL THEN '' ELSE CONVERT(NVARCHAR,[TimeOut]) END
  FROM tblTime
  WHERE tId = ( SELECT MAX(tId)
                  FROM tblTime
                  WHERE UserId = 3571
               )

但ids不是獲取最新記錄的好選擇。 可能你想要更多這些方面的東西,但它取決於列的含義,如果可能有重復...:

SELECT CASE WHEN [TimeOut] IS NULL THEN '' ELSE CONVERT(NVARCHAR,[TimeOut]) end
  FROM tblTime
  WHERE UserId = 3571
    AND ActiveDate = ( SELECT MAX(ActiveDate)
                         FROM tblTime
                         WHERE UserId = 3571
                     )

或者您可以將子查詢作為FROM子句的一部分。

如果您想明確地為此查詢(假設ActiveDate的含義是用戶最后在網站上活動的時間):

SELECT TOP 1 
    CASE WHEN TimeOut IS NULL THEN 0 ELSE 1 END 
FROM tblTime 
WHERE UserID = 3571
ORDER BY ActiveDate DESC

否則,如果您將整個對象加載到代碼中,只需檢查最近記錄的TimeOut是否為空。

我建議使用某種UserActivity表來跟蹤用戶登錄和退出的日期和時間。 通過查看空值來跟蹤用戶活動並不是最可靠的。

CREATE TABLE UserActivity
(
    UserActivityID int,
    UserActivityTypeID tinyint,
    DateActivity datetime
)

UserActivityType是另一個包含Sign InSign Out ,您可能希望跟蹤其他內容。

格倫,你打敗了我! 以下內容將獲取最新TimeIn的記錄(假設沒有重復項)並將為您提供Y / N標志以確定是否顯示Enter按鈕。

SELECT (CASE WHEN t1.[TimeOut] IS NOT NULL THEN 'Y' ELSE 'N' END) AS is_enter_button_displayed
  FROM tblTime t1
 WHERE t1.[TimeIn] = (SELECT MAX(t2.[TimeIn]) FROM tblTime t2 WHERE t2.UserId = t1.UserId)
   AND UserId = 3571;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM