CONVERT
учитывает как целевой тип, так и тип выражения, чтобы понять, следует ли учитывать третий аргумент. Если вы конвертируете дату и время в строку или наоборот, третий аргумент считается. В вашем примере строка преобразуется в строку, поэтому третий аргумент игнорируется.
Учтите это:
SELECT 1, CONVERT(datetime, '03/01/2011', 103)
SELECT 2, CONVERT(datetime, '03/01/2011', 101)
SELECT 3, CONVERT(varchar, '03/01/2011', 103)
SELECT 4, CONVERT(varchar, '03/01/2011', 101)
Вот результаты:
--- -----------------------
1 2011-01-03 00:00:00.000
--- -----------------------
2 2011-03-01 00:00:00.000
--- ------------------------------
3 03/01/2011
--- ------------------------------
4 03/01/2011
Как видите, последние два «преобразования» ничего не изменили, потому что и исходный, и целевой тип были varchar
, хотя выражение выглядело как date
/ datetime
.
Справка: