写了这个小桌面程序,以帮助我记得是什么风格112没有,或如何得到HH:MM AM / PM一个DATETIME列。基本上,它是有效的样式编号填充一个表,然后通过这些循环,并产生每个样式的结果(和产生这一结果的语法),鉴于当前的日期和时间。
是的,它使用游标。这是一个辅助功能,不是你会使用生产环境中的一部分,所以我不认为对性能的影响应该是一个大问题。但如果你有
代码如下 | 复制代码 |
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; The output should look like this: 0 Feb 22 2006 4:26PM 1 2 3 4 5 6 7 8 9 10 11 12 13 14 20 21 22 23 24 25 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 120 121 126 127 130 131 |
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索varchar转换datetime、sql varchar datetime、字符串转换为datetime、datetime转换成字符串、字符串转换datetime,以便于您获取更多的相关知识。