이전 SQL 서버 2012, 두 convert()
styles
select convert(char(10),getdate(),105)+' '+convert(char(5),getdate(),108)
반환 : 24-03-2017 16:05
SQL Server 2012 이상에서는 Lamak의 대답과 마찬가지로 format()
을 사용할 수 있습니다.
select format(getdate(),'dd-MM-yyyy HH:mm')
반환 : 24-03-2017 16:05
그러나 format()
는 느린 여기 좀 걸릴 수 있습니다 : format()
is nice and all, but… - Aaron Bertand
을 내 시스템에 빠른 테스트에서 convert()
이에 대한 format()
보다 훨씬 더 빨랐다 합치 (포맷되지 않은 값으로 정렬 된 상위 1을 선택하는 경우 제외).
+---------+--------------------+------------------+-------------------+-----------------+----------------+----------------------------------------------------------------------------------------------------------------+
| func | total_elapsed_time | avg_elapsed_time | total_worker_time | avg_worker_time | total_clr_time | t |
+---------+--------------------+------------------+-------------------+-----------------+----------------+----------------------------------------------------------------------------------------------------------------+
| convert | 7000 | 1400.00 | 7000 | 1400.00 | 0 | DECLARE @d CHAR(10);SELECT @d = convert(char(10),d,105)+' '+convert(char(5),d,108) FROM dbo.dtTest ORDER BY d; |
| format | 135000 | 27000.00 | 135000 | 27000.00 | 128000 | DECLARE @d CHAR(10);SELECT @d = format(d,'dd-mm-yyyy hh:mm') FROM dbo.dtTest ORDER BY d; |
| convert | 14000 | 2800.00 | 14000 | 2800.00 | 0 | SELECT d = convert(char(10),d,105)+' '+convert(char(5),d,108) FROM dbo.dtTest ORDER BY d; |
| format | 143000 | 28600.00 | 143000 | 28600.00 | 123000 | SELECT d = format(d,'dd-mm-yyyy hh:mm') FROM dbo.dtTest ORDER BY d; |
| convert | 1000 | 200.00 | 1000 | 200.00 | 0 | SELECT TOP (1) convert(char(10),d,105)+' '+convert(char(5),d,108) FROM dbo.dtTest ORDER BY d; |
| format | 1000 | 200.00 | 1000 | 200.00 | 1000 | SELECT TOP (1) format(d,'dd-mm-yyyy hh:mm') FROM dbo.dtTest ORDER BY d; |
| convert | 4000 | 800.00 | 4000 | 800.00 | 0 | DECLARE @d CHAR(16);SELECT @d = convert(char(10),d,105)+' '+convert(char(5),d,108) FROM dbo.dtTest ORDER BY d; |
| format | 105000 | 21000.00 | 105000 | 21000.00 | 95000 | DECLARE @d CHAR(16);SELECT @d = format(d,'dd-mm-yyyy hh:mm') FROM dbo.dtTest ORDER BY d; |
+---------+--------------------+------------------+-------------------+-----------------+----------------+----------------------------------------------------------------------------------------------------------------+
테스트는 Aaron Bertrand가 작성한 기사에 포함 된 테스트 스크립트를 수정 한 것입니다. 수정 버전은 사용 중입니다. pastebin, here.
티아에서 더 작은 char - char (16)로 변환하면됩니다. –