USE tempdb;
GO
CREATE PROCEDURE dbo.help_DateTimeFormats
@styleID TINYINT = NULL
AS
BEGIN
SET NOCOUNT ON;
IF OBJECTPROPERTY
(
OBJECT_ID('dbo.DateTimeFormats'),
'IsUserTable'
) = 1
BEGIN
DROP TABLE dbo.DateTimeFormats;
END
CREATE TABLE dbo.DateTimeFormats
(
styleID TINYINT PRIMARY KEY,
outputLength TINYINT,
outputSyntax VARCHAR(64),
outputSample VARCHAR(255)
);
INSERT dbo.DateTimeFormats(styleID, outputLength)
SELECT style = 0, outputLength = 19
UNION SELECT 1, 8
UNION SELECT 2, 8
UNION SELECT 3, 8
UNION SELECT 4, 8
UNION SELECT 5, 8
UNION SELECT 6, 9
UNION SELECT 7, 10
UNION SELECT 8, 8
UNION SELECT 9, 26
UNION SELECT 10, 8
UNION SELECT 11, 8
UNION SELECT 12, 6
UNION SELECT 13, 24
UNION SELECT 14, 12
UNION SELECT 20, 19
UNION SELECT 21, 23
UNION SELECT 22, 20
UNION SELECT 23, 10
UNION SELECT 24, 8
UNION SELECT 25, 23
UNION SELECT 100, 19
UNION SELECT 101, 10
UNION SELECT 102, 10
UNION SELECT 103, 10
UNION SELECT 104, 10
UNION SELECT 105, 10
UNION SELECT 106, 11
UNION SELECT 107, 12
UNION SELECT 108, 8
UNION SELECT 109, 26
UNION SELECT 110, 10
UNION SELECT 111, 10
UNION SELECT 112, 8
UNION SELECT 113, 24
UNION SELECT 114, 12
UNION SELECT 120, 19
UNION SELECT 121, 23
UNION SELECT 126, 23
UNION SELECT 130, 32
UNION SELECT 131, 25;
IF CHARINDEX('SQL Server 2005', @@VERSION) > 0
INSERT dbo.DateTimeFormats(styleID, outputLength)
SELECT 127, 23; -- 127 is new in 2005
UPDATE dbo.DateTimeFormats
SET outputSyntax = 'CONVERT(CHAR('
+ RTRIM(outputLength) + '), CURRENT_TIMESTAMP, '
+ RTRIM(styleID) + ')';
DECLARE
@sql VARCHAR(1024),
@style TINYINT,
@syntax VARCHAR(64);
DECLARE c CURSOR
LOCAL FORWARD_ONLY STATIC READ_ONLY FOR
SELECT styleID, outputSyntax
FROM dbo.DateTimeFormats;
OPEN c; FETCH NEXT FROM c INTO @style, @syntax;
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @sql = 'UPDATE dbo.DateTimeFormats
SET outputSample = ' + @syntax + '
WHERE styleID = ' + RTRIM(@style) + ';';
EXEC(@sql);
FETCH NEXT FROM c INTO @style, @syntax;
END
CLOSE c; DEALLOCATE c;
SELECT
styleID,
outputSample,
outputSyntax
FROM
dbo.DateTimeFormats
WHERE
styleID = COALESCE(@styleID, styleID);
DROP TABLE dbo.DateTimeFormats;
END
GO
EXEC dbo.help_DateTimeFormats;
EXEC dbo.help_DateTimeFormats @styleID = 112;
-- DROP PROCEDURE dbo.help_DateTimeFormats;