Pensé que sería interesante ejecutar algunas consultas rápidas para ver cómo varias cadenas de formato afectan el formato de los valores de fecha/hora.
Ejemplo 1:la cultura invariable
DECLARE @date datetimeoffset, @culture char(2); SET @date = '2030-05-25 23:59:30.1234567 +07:00'; SET @culture = 'iv'; SELECT FORMAT(@date, 'd', @culture) AS 'd', FORMAT(@date, 'D', @culture) AS 'D', FORMAT(@date, 'f', @culture) AS 'f', FORMAT(@date, 'F', @culture) AS 'F', FORMAT(@date, 'g', @culture) AS 'g', FORMAT(@date, 'G', @culture) AS 'G', FORMAT(@date, 'm', @culture) AS 'm', FORMAT(@date, 'M', @culture) AS 'M', FORMAT(@date, 'o', @culture) AS 'o', FORMAT(@date, 'O', @culture) AS 'O', FORMAT(@date, 'r', @culture) AS 'r', FORMAT(@date, 'R', @culture) AS 'R', FORMAT(@date, 's', @culture) AS 's', FORMAT(@date, 't', @culture) AS 't', FORMAT(@date, 'T', @culture) AS 'T', FORMAT(@date, 'u', @culture) AS 'u', FORMAT(@date, 'U', @culture) AS 'U', FORMAT(@date, 'y', @culture) AS 'y', FORMAT(@date, 'Y', @culture) AS 'Y';
Resultado (usando salida vertical):
d | 05/25/2030 D | Saturday, 25 May 2030 f | Saturday, 25 May 2030 23:59 F | Saturday, 25 May 2030 23:59:30 g | 05/25/2030 23:59 G | 05/25/2030 23:59:30 m | May 25 M | May 25 o | 2030-05-25T23:59:30.1234567+07:00 O | 2030-05-25T23:59:30.1234567+07:00 r | Sat, 25 May 2030 16:59:30 GMT R | Sat, 25 May 2030 16:59:30 GMT s | 2030-05-25T23:59:30 t | 23:59 T | 23:59:30 u | 2030-05-25 16:59:30Z U | NULL y | 2030 May Y | 2030 May
Ejemplo 2:inglés estadounidense
DECLARE @date datetimeoffset, @culture char(5); SET @date = '2030-05-25 23:59:30.1234567 +07:00'; SET @culture = 'en-us'; SELECT FORMAT(@date, 'd', @culture) AS 'd', FORMAT(@date, 'D', @culture) AS 'D', FORMAT(@date, 'f', @culture) AS 'f', FORMAT(@date, 'F', @culture) AS 'F', FORMAT(@date, 'g', @culture) AS 'g', FORMAT(@date, 'G', @culture) AS 'G', FORMAT(@date, 'm', @culture) AS 'm', FORMAT(@date, 'M', @culture) AS 'M', FORMAT(@date, 'o', @culture) AS 'o', FORMAT(@date, 'O', @culture) AS 'O', FORMAT(@date, 'r', @culture) AS 'r', FORMAT(@date, 'R', @culture) AS 'R', FORMAT(@date, 's', @culture) AS 's', FORMAT(@date, 't', @culture) AS 't', FORMAT(@date, 'T', @culture) AS 'T', FORMAT(@date, 'u', @culture) AS 'u', FORMAT(@date, 'U', @culture) AS 'U', FORMAT(@date, 'y', @culture) AS 'y', FORMAT(@date, 'Y', @culture) AS 'Y';
Resultado (usando salida vertical):
d | 5/25/2030 D | Saturday, May 25, 2030 f | Saturday, May 25, 2030 11:59 PM F | Saturday, May 25, 2030 11:59:30 PM g | 5/25/2030 11:59 PM G | 5/25/2030 11:59:30 PM m | May 25 M | May 25 o | 2030-05-25T23:59:30.1234567+07:00 O | 2030-05-25T23:59:30.1234567+07:00 r | Sat, 25 May 2030 16:59:30 GMT R | Sat, 25 May 2030 16:59:30 GMT s | 2030-05-25T23:59:30 t | 11:59 PM T | 11:59:30 PM u | 2030-05-25 16:59:30Z U | NULL y | May 2030 Y | May 2030
Ejemplo 3:británico
DECLARE @date datetimeoffset, @culture char(5); SET @date = '2030-05-25 23:59:30.1234567 +07:00'; SET @culture = 'en-gb'; SELECT FORMAT(@date, 'd', @culture) AS 'd', FORMAT(@date, 'D', @culture) AS 'D', FORMAT(@date, 'f', @culture) AS 'f', FORMAT(@date, 'F', @culture) AS 'F', FORMAT(@date, 'g', @culture) AS 'g', FORMAT(@date, 'G', @culture) AS 'G', FORMAT(@date, 'm', @culture) AS 'm', FORMAT(@date, 'M', @culture) AS 'M', FORMAT(@date, 'o', @culture) AS 'o', FORMAT(@date, 'O', @culture) AS 'O', FORMAT(@date, 'r', @culture) AS 'r', FORMAT(@date, 'R', @culture) AS 'R', FORMAT(@date, 's', @culture) AS 's', FORMAT(@date, 't', @culture) AS 't', FORMAT(@date, 'T', @culture) AS 'T', FORMAT(@date, 'u', @culture) AS 'u', FORMAT(@date, 'U', @culture) AS 'U', FORMAT(@date, 'y', @culture) AS 'y', FORMAT(@date, 'Y', @culture) AS 'Y';
Resultado (usando salida vertical):
d | 25/05/2030 D | 25 May 2030 f | 25 May 2030 23:59 F | 25 May 2030 23:59:30 g | 25/05/2030 23:59 G | 25/05/2030 23:59:30 m | 25 May M | 25 May o | 2030-05-25T23:59:30.1234567+07:00 O | 2030-05-25T23:59:30.1234567+07:00 r | Sat, 25 May 2030 16:59:30 GMT R | Sat, 25 May 2030 16:59:30 GMT s | 2030-05-25T23:59:30 t | 23:59 T | 23:59:30 u | 2030-05-25 16:59:30Z U | NULL y | May 2030 Y | May 2030
Ejemplo 4:alemán
DECLARE @date datetimeoffset, @culture char(2); SET @date = '2030-05-25 23:59:30.1234567 +07:00'; SET @culture = 'de'; SELECT FORMAT(@date, 'd', @culture) AS 'd', FORMAT(@date, 'D', @culture) AS 'D', FORMAT(@date, 'f', @culture) AS 'f', FORMAT(@date, 'F', @culture) AS 'F', FORMAT(@date, 'g', @culture) AS 'g', FORMAT(@date, 'G', @culture) AS 'G', FORMAT(@date, 'm', @culture) AS 'm', FORMAT(@date, 'M', @culture) AS 'M', FORMAT(@date, 'o', @culture) AS 'o', FORMAT(@date, 'O', @culture) AS 'O', FORMAT(@date, 'r', @culture) AS 'r', FORMAT(@date, 'R', @culture) AS 'R', FORMAT(@date, 's', @culture) AS 's', FORMAT(@date, 't', @culture) AS 't', FORMAT(@date, 'T', @culture) AS 'T', FORMAT(@date, 'u', @culture) AS 'u', FORMAT(@date, 'U', @culture) AS 'U', FORMAT(@date, 'y', @culture) AS 'y', FORMAT(@date, 'Y', @culture) AS 'Y';
Resultado (usando salida vertical):
d | 25.05.2030 D | Samstag, 25. Mai 2030 f | Samstag, 25. Mai 2030 23:59 F | Samstag, 25. Mai 2030 23:59:30 g | 25.05.2030 23:59 G | 25.05.2030 23:59:30 m | 25. Mai M | 25. Mai o | 2030-05-25T23:59:30.1234567+07:00 O | 2030-05-25T23:59:30.1234567+07:00 r | Sat, 25 May 2030 16:59:30 GMT R | Sat, 25 May 2030 16:59:30 GMT s | 2030-05-25T23:59:30 t | 23:59 T | 23:59:30 u | 2030-05-25 16:59:30Z U | NULL y | Mai 2030 Y | Mai 2030
La siguiente tabla proporciona una descripción para cada cadena de formato.
DECLARE @thedatetimeoffset datetimeoffset = '2030-05-25 23:59:30.1234567 +12:15'; SELECT FORMAT(@thedatetimeoffset, 'd') AS 'd (Short date)', FORMAT(@thedatetimeoffset, 'D') AS 'D (Long date)', FORMAT(@thedatetimeoffset, 'f') AS 'f (Full date/time - short time)', FORMAT(@thedatetimeoffset, 'F') AS 'F (Full date/time - long time)', FORMAT(@thedatetimeoffset, 'g') AS 'g (General date/time - short time)', FORMAT(@thedatetimeoffset, 'G') AS 'G (General date/time - long time)', FORMAT(@thedatetimeoffset, 'm') AS 'm (Month/day)', FORMAT(@thedatetimeoffset, 'M') AS 'M (Month/day)', FORMAT(@thedatetimeoffset, 'o') AS 'o (Round-trip date/time)', FORMAT(@thedatetimeoffset, 'O') AS 'O (Round-trip date/time)', FORMAT(@thedatetimeoffset, 'r') AS 'r (RFC1123)', FORMAT(@thedatetimeoffset, 'R') AS 'R (RFC1123)', FORMAT(@thedatetimeoffset, 's') AS 's (Sortable date/time)', FORMAT(@thedatetimeoffset, 't') AS 't (Short time)', FORMAT(@thedatetimeoffset, 'T') AS 'T (Long time)', FORMAT(@thedatetimeoffset, 'u') AS 'u (Universal sortable date/time)', FORMAT(@thedatetimeoffset, 'U') AS 'U (Universal full date/time)', FORMAT(@thedatetimeoffset, 'y') AS 'y (Year/month)', FORMAT(@thedatetimeoffset, 'Y') AS 'Y (Year/month)';
Resultado:
d (Short date) | 5/25/2030 D (Long date) | Saturday, May 25, 2030 f (Full date/time - short time) | Saturday, May 25, 2030 11:59 PM F (Full date/time - long time) | Saturday, May 25, 2030 11:59:30 PM g (General date/time - short time) | 5/25/2030 11:59 PM G (General date/time - long time) | 5/25/2030 11:59:30 PM m (Month/day) | May 25 M (Month/day) | May 25 o (Round-trip date/time) | 2030-05-25T23:59:30.1234567+12:15 O (Round-trip date/time) | 2030-05-25T23:59:30.1234567+12:15 r (RFC1123) | Sat, 25 May 2030 11:44:30 GMT R (RFC1123) | Sat, 25 May 2030 11:44:30 GMT s (Sortable date/time) | 2030-05-25T23:59:30 t (Short time) | 11:59 PM T (Long time) | 11:59:30 PM u (Universal sortable date/time) | 2030-05-25 11:44:30Z U (Universal full date/time) | NULL y (Year/month) | May 2030 Y (Year/month) | May 2030