Table1:
| Name | Intime |
|---|---|
| Paulsmith | 15:10:45.0486392 |
I know we can use the trim and len functions to remove the last characters from column Name (remove 'smith') to show output as only 'Paul`.
How can we do the same for time in column Intime?
I tried
SELECT SUBSTRING('15:10:45.0486392',1,len('15:10:45.0486392')-8) AS Intime
FROM stuattrecordAM
The output I got is "15:10:45" as expected.
SELECT SUBSTRING('Intime',1,len('Intime')-8) AS Intime
FROM stuattrecordAM
Issue
When I try to use Intime column name instead the string it's showing the following error:
Argument data type time is invalid for argument 1 of substring function.
See also my previous, related question: How to trim Column Value SQL
How can I format the value so that result contains only first 8 characters displaying hours:minutes:seconds?
CodePudding user response:
Instead of TRIM and LEN, you can use a simpler function like REPLACE.
SELECT Value = REPLACE (Value, '''', '');
Do let me know if you still want to use TRIM and LEN.
CodePudding user response:
To get the hh:mm:ss portion of from a properly formatted time you can use the convert function, for example
declare @t varchar(16) = '15:10:45.0486392';
select Convert(char(8), @t, 114);
Result: 15:10:45
