Get the login time for one week
You can solve it using a dynamic PIVOT solution.

Have a look at MS-Docs about PIVOT.




DECLARE @col AS nvarchar(MAX),
        @cmd AS nvarchar(MAX);

SET @col = STUFF((SELECT distinct ',' + QUOTENAME(CONVERT(DATE,dt,101)) 
            FROM Tc_Date
            FOR XML PATH(''), TYPE
            ).value('.', 'nvarchar(MAX)') 
            ,1,1,'')

SET @cmd =   'SELECT * '
           + ' FROM  (SELECT EmpId,  Office_Date, CONVERT(VARCHAR(20), Login_time, 108) LoginTime FROM Logins) src'
           + ' PIVOT (MAX(LoginTime) FOR Office_Date IN (' + @col + ')) pvt';

EXECUTE (@cmd);
GO



EmpId | 2016-02-01 | 2016-02-02 | 2016-02-03 | 2016-02-04 | 2016-02-05 | 2016-02-06 | 2016-02-07 | 2016-02-08 | 2016-02-09 | 2016-02-10
----: | :--------- | :--------- | :--------- | :--------- | :--------- | :--------- | :--------- | :--------- | :--------- | :---------
  396 | 08:42:39   | 07:49:36   | 07:49:54   | 07:54:15   | 07:51:12   | null       | null       | 07:58:06   | 07:56:26   | 07:43:16  
  397 | 08:35:09   | 08:28:50   | 08:27:38   | 08:34:26   | 08:36:12   | null       | null       | null       | 08:35:58   | 08:30:51  



dbfiddle here