CONVERT DATATYPE SQL
Các cách đổi kiểu dữ liệu trong SQL SERVER
KIỂU DATETIME
Đổi kiểu Date sang Text
CONVERT(nvarchar, VR.Ngay, 103) --UK Date format 'DD/MM/YYYY'
--Kết quả:
05/11/2022
Format # Example query Sample result
0 SELECT CONVERT(NVARCHAR, GETDATE(), 0) Aug 23 2019 1:39PM
1 SELECT CONVERT(NVARCHAR, GETDATE(), 1) 08/23/19
2 SELECT CONVERT(NVARCHAR, GETDATE(), 2) 19.08.23
3 SELECT CONVERT(NVARCHAR, GETDATE(), 3) 23/08/19
4 SELECT CONVERT(NVARCHAR, GETDATE(), 4) 23.08.19
5 SELECT CONVERT(NVARCHAR, GETDATE(), 5) 23-08-19
6 SELECT CONVERT(NVARCHAR, GETDATE(), 6) 23 Aug 19
7 SELECT CONVERT(NVARCHAR, GETDATE(), 7) Aug 23, 19
8 || 24 || 108 SELECT CONVERT(NVARCHAR, GETDATE(), 8) 13:39:17
9 || 109 SELECT CONVERT(NVARCHAR, GETDATE(), 9) Aug 23 2019 1:39:17:090PM
10 SELECT CONVERT(NVARCHAR, GETDATE(), 10) 08-23-19
11 SELECT CONVERT(NVARCHAR, GETDATE(), 11) 19/08/23
12 SELECT CONVERT(NVARCHAR, GETDATE(), 12) 190823
13 || 113 SELECT CONVERT(NVARCHAR, GETDATE(), 13) 23 Aug 2019 13:39:17:090
14 || 114 SELECT CONVERT(NVARCHAR, GETDATE(), 14) 13:39:17:090
20 || 120 SELECT CONVERT(NVARCHAR, GETDATE(), 20) 2019-08-23 13:39:17
21 || 25 || 121 SELECT CONVERT(NVARCHAR, GETDATE(), 21) 2019-08-23 13:39:17.090
22 SELECT CONVERT(NVARCHAR, GETDATE(), 22) 08/23/19 1:39:17 PM
23 SELECT CONVERT(NVARCHAR, GETDATE(), 23) 2019-08-23
101 SELECT CONVERT(NVARCHAR, GETDATE(), 101) 08/23/2019
102 SELECT CONVERT(NVARCHAR, GETDATE(), 102) 2019.08.23
103 SELECT CONVERT(NVARCHAR, GETDATE(), 103) 23/08/2019
104 SELECT CONVERT(NVARCHAR, GETDATE(), 104) 23.08.2019
105 SELECT CONVERT(NVARCHAR, GETDATE(), 105) 23-08-2019
106 SELECT CONVERT(NVARCHAR, GETDATE(), 106) 23 Aug 2019
107 SELECT CONVERT(NVARCHAR, GETDATE(), 107) Aug 23, 2019
110 SELECT CONVERT(NVARCHAR, GETDATE(), 110) 08-23-2019
111 SELECT CONVERT(NVARCHAR, GETDATE(), 111) 2019/08/23
112 SELECT CONVERT(NVARCHAR, GETDATE(), 112) 20190823
113 SELECT CONVERT(NVARCHAR, GETDATE(), 113) 23 Aug 2019 13:39:17.090
120 SELECT CONVERT(NVARCHAR, GETDATE(), 120) 2019-08-23 13:39:17
121 SELECT CONVERT(NVARCHAR, GETDATE(), 121) 2019-08-23 13:39:17.090
126 SELECT CONVERT(NVARCHAR, GETDATE(), 126) 2019-08-23T13:39:17.090
127 SELECT CONVERT(NVARCHAR, GETDATE(), 127) 2019-08-23T13:39:17.090
130 SELECT CONVERT(NVARCHAR, GETDATE(), 130) 22 ذو الحجة 1440 1:39:17.090P
131 SELECT CONVERT(NVARCHAR, GETDATE(), 131) 22/12/1440 1:39:17.090PM
SELECT FORMAT (getdate(), 'dd/MM/yyyy ') as date
21/03/2021
SELECT FORMAT (getdate(), 'dd/MM/yyyy, hh:mm:ss ') as date
21/03/2021, 11:36:14
SELECT FORMAT (getdate(), 'dddd, MMMM, yyyy') as date
Wednesday, March, 2021
SELECT FORMAT (getdate(), 'MMM dd yyyy') as date
Mar 21 2021
SELECT FORMAT (getdate(), 'MM.dd.yy') as date
03.21.21
SELECT FORMAT (getdate(), 'MM-dd-yy') as date
03-21-21
SELECT FORMAT (getdate(), 'hh:mm:ss tt') as date
11:36:14 AM
SELECT FORMAT (getdate(), 'd','us') as date
03/21/2021
SELECT FORMAT (getdate(), 'yyyy-MM-dd hh:mm:ss tt') as date
2021-03-21 11:36:14 AM
SELECT FORMAT (getdate(), 'yyyy.MM.dd hh:mm:ss t') as date
2021.03.21 11:36:14 A
SELECT FORMAT (getdate(), 'dddd, MMMM, yyyy','es-es') as date --Spanish
domingo, marzo, 2021
SELECT FORMAT (getdate(), 'dddd dd, MMMM, yyyy','ja-jp') as date --Japanese
日曜日 21, 3月, 2021
SELECT FORMAT (getdate(), 'MM-dd-yyyy ') as date
03-21-2021
SELECT FORMAT (getdate(), 'MM dd yyyy ') as date
03 21 2021
SELECT FORMAT (getdate(), 'yyyyMMdd') as date
20231011
SELECT FORMAT (getdate(), 'HH:mm:dd') as time
11:36:14
SELECT FORMAT (getdate(), 'HH:mm:dd.ffffff') as time
11:36:14.84000
Đổi kiểu Date sang số Numeric
declare @dateb datetime
set @dateb = getdate()
select cast(format(@dateb,'yyyyMMdd') as int) --2012 or higher
select cast(convert(varchar(8),@dateb,112) as int) -- all versions
-------------------------------------------------------------------------
select convert(decimal(12,0),getdate())
select convert(decimal(12,4),getdate())
select convert(NUMERIC(12,0),getdate())
select convert(NUMERIC(12,4),getdate())
-- Kết quả:
45603
--
45602.6502
KIỂU SỐ NUMERIC
Đổi kiểu Numeric sang Text
--CAST (expression AS data_type [(length)])
SELECT CAST(123 AS VARCHAR(10))
--------------------------------------
--CONVERT (data_type [ (length) ], expression [, style ])
SELECT CONVERT(VARCHAR(10), 123456)
--------------------------------------
--STR(number, length, decimal)
SELECT STR(987654, 10, 0)
-- Thay thế str bằng hàm LTRIM() sẽ giữ nguyên giá trị
-- Ví dụ
SELECT STR(1234567890.123)
-- Kết quả:
1234567890
-- Dùng LTRIM()
SELECT LTRIM(1234567890.123)
--Kết quả:
1234567890.123
Đổi kiểu Numeric sang Date
--
SELECT CAST( CAST( 20281030 AS char(8)) AS date );
--Kết quả:
2028-10-30
--
SELECT DATEADD(s, 1870917359, '1970-01-01');
--Kết quả:
2029-04-15 03:15:59.000
--
SELECT CAST(49723.3986 AS datetime);
--Kết quả:
2036-02-20 09:33:59.040
-- Đổi kiểu ngầm định
DECLARE @number float = 49723.3986;
DECLARE @datetime datetime = @number;
SELECT
@number AS "Original Value",
@datetime AS "Converted Value";
--Kết quả:
Original Value Converted Value
-------------- -----------------------
49723.3986 2036-02-20 09:33:59.040
KIỂU TEXT
Đổi kiểu Text sang Date
-- Dùng CAST
SELECT CAST('11/08/2024' as date) as StringToDate ,
CAST(GETDATE() as VARCHAR(50)) as DateToString
--Kết quả:
2024-11-08 Nov 8 2024 4:00PM
-- Dùng CONVERT
SELECT CONVERT(DATETIME,'11/08/2024',103)
--Kết quả:
2024-08-11 00:00:00.000
-- Dùng PARSE:
--PARSE(<value> AS <data type> [USING <culture>])
SELECT PARSE('11/08/2024' AS DATE USING 'AR-LB')
--Kết quả:
2024-08-11
-- Dùng TRY_CAST(), TRY_CONVERT() and TRY_PARSE() tương tự
Đổi kiểu Text sang Numeric
-- Dùng CAST
SELECT CAST('100' AS INT) AS converted_integer
-- Dùng CONVERT
SELECT CONVERT(INT, '2000') AS converted_integer
-- DÙNG TRY_CAST
--Cách 1:
SELECT TRY_CAST(your_text_column AS INT) AS converted_integerFROM your_table;
--Cách 2:
SELECT CASE WHEN ISNUMERIC(your_text_column) = 1 THEN CAST(your_text_column AS INT) ELSE NULL END AS converted_integer
FROM your_table;
-- Cách 3: Kiểm soát được lỗi
BEGIN TRY
SELECT CAST(your_text_column AS INT) AS converted_integer FROM your_table;
END TRY
BEGIN CATCH
SELECT ERROR_MESSAGE() AS ErrorMessage;
END CATCH;
TÀI LIỆU THAM KHẢO
https://www.mssqltips.com/sqlservertip/2655/format-sql-server-dates-with-format-function/
https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/
https://www.w3schools.com/sql/func_sqlserver_current_user.asp
https://www.sqlshack.com/sql-server-functions-for-converting-string-to-date/
https://www.sqlshack.com/sql-convert-date-functions-and-formats/
Last updated