Sql-server – Conversion failed when converting the varchar value ‘Hours’ to data type int

sql serversql-server-2008

Conversion failed when converting the varchar value 'Hours' to data type int. This is my query:

Sum(Cast(Cast(DATEDIFF(HH, ld_time_tracker_start_time,
    fld_time_tracker_end_time)%3600/60 As int) +' Hours'+ 
Cast(DATEDIFF(MINUTE, ld_time_tracker_start_time,
 fld_time_tracker_end_time)As int )+'Minutes' As Int)) 
As [Time Spent(In hrs)]

I modified the above Code To:

+Cast('Hours' As Int)
+Covert(int,'Hours')

… and got the error message:

Conversion failed when converting the varchar value ' Hours' to data
type int

Best Answer

This is not clear what output is needed. You are trying to convert text strings to int. This obviously does not work. Besides this type of formatting might fit better outside of SQL Server.

If you want something like 5 Hours 15 Minutes you can try this query:

[Time Spent(In hrs)] =
    CAST(
        SUM(
            DATEDIFF(hour, ld_time_tracker_start_time, ld_time_tracker_end_time)                     
        )
    as varchar(10))
    +' Hours '+ 
    CAST(
        SUM(
            DATEDIFF(minute, ld_time_tracker_start_time, ld_time_tracker_end_time) % 60       
        )
    as varchar(10))
+' Minutes'

Note that I have replaced HH by hour. This is easier to read and understand and it avoid mistakes. See DATEDIFF (Transact-SQL).