Here's an implementation of the formula from [Wikipedia][1], except that this will truncate fractional seconds because SQL only allows the modulo operator with ints. DECLARE @geom geometry; SET @geom = geometry::STGeomFromText('POINT(-83.255 32.567477)', 4326); SELECT CASE WHEN @geom.STX < 0 then '-' ELSE '' END + CAST(FLOOR(ABS(@geom.STX)) as varchar) + ' ' + CAST(CAST(FLOOR(ABS(@geom.STX) * 60) AS INT) % 60 as varchar) + ''' ' + CAST(CAST(FLOOR(ABS(@geom.STX) * 3600) AS INT) % 60 AS VARCHAR) + '"', CASE WHEN @geom.STY < 0 then '-' ELSE '' END + CAST(FLOOR(ABS(@geom.STY)) as varchar) + ' ' + CAST(CAST(FLOOR(ABS(@geom.STY) * 60) AS INT) % 60 as varchar) + ''' ' + CAST(CAST(FLOOR(ABS(@geom.STY) * 3600) AS INT) % 60 AS VARCHAR) + '"' or for N, S, E, W rather than signs DECLARE @geom geometry; SET @geom = geometry::STGeomFromText('POINT(-83.255 32.567477)', 4326); SELECT CAST(FLOOR(ABS(@geom.STX)) as varchar) + ' ' + CAST(CAST(FLOOR(ABS(@geom.STX) * 60) AS INT) % 60 as varchar) + ''' ' + CAST(CAST(FLOOR(ABS(@geom.STX) * 3600) AS INT) % 60 AS VARCHAR) + '"' + CASE WHEN @geom.STX < 0 then ' W' ELSE ' E' END, CAST(FLOOR(ABS(@geom.STY)) as varchar) + ' ' + CAST(CAST(FLOOR(ABS(@geom.STY) * 60) AS INT) % 60 as varchar) + ''' ' + CAST(CAST(FLOOR(ABS(@geom.STY) * 3600) AS INT) % 60 AS VARCHAR) + '"' + CASE WHEN @geom.STY < 0 then ' S' ELSE ' N' END [1]: http://en.wikipedia.org/wiki/Decimal_degrees