SQL Server 学习系列之五
很多初学者会为日期格式的输出很困惑,如何得到想要的时间格式呢?convert()函数变换无穷,给我们带来困惑,用convert(char(10),getdate(),@int)函数的类型值输出格式由参数@int控制,可以编写一个存储过程,不用记忆,方便查询,关键代码如下:
-- =============================================
-- Author: zhangbc
-- Create date: 2013-10-19
-- Description: 检测convert(char(10),getdate(),1)函数的类型值输出格式
-- =============================================
ALTER PROCEDURE [dbo].[Getconvert]
(
@startFlg INT,
@endFlg INT,
@condiition CHAR(1000)='1=1'
)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
IF(@startFlg>@endFlg)
BEGIN
SELECT '开始数字大于结束数字,顺序不对,请更正!' as ErrorMessage
END
ELSE
BEGIN
CREATE TABLE #t
( flg INT,
date NVARCHAR(100),
txt TEXT DEFAULT NULL
)
DECLARE
@date NVARCHAR(100),
@cn NVARCHAR(4000)='无效类型值有:',
@ErrorMessage NVARCHAR(100),
@sql CHAR(1000)
WHILE (@startFlg<=@endFlg)
BEGIN
--捕获异常状态
BEGIN TRY
SET @date=convert(char(20),getdate(),@startFlg)
INSERT INTO #t VALUES (@startFlg ,@date,NULL)
END TRY
BEGIN CATCH
SET @ErrorMessage=ERROR_MESSAGE()
SET @cn=@cn+' '+replace(CAST(@startFlg AS NVARCHAR(4000)),'','')
END CATCH;
set @startFlg=@startFlg+1
END
INSERT INTO #t VALUES (@endFlg+1,@ErrorMessage,cast(@cn AS TEXT))
--SELECT @cn,@ErrorMessage
SET @sql='SELECT * FROM #t where '+@condiition
EXEC(@sql)
DROP TABLE #t
END
测试一:
exec [Getconvert] 1000,100
截图如下:

测试二:
exec [Getconvert] 10,20
截图如下:

一看便知,解释都是多余的,有心人可以学习一下SQL中捕捉异常的方法,try……catch……语句在SQL使用真心不多见,但对规避程序风险好处还是大大的,本文就是一个很好的体现;另外,convert()函数功能还是很强大的,值得深入学习。此篇文章也是对SQL Server 学习系列之二做了一下拓展,祝有心人好运!
SQL Server 学习系列之五的更多相关文章
- SQL Server 学习系列之六
SQL Server 学习系列之六 SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL 关键字) SQ ...
- SQL Server 学习系列之四(SQL 内幕)
SQL Server 学习系列之四(SQL 内幕) SQL Server 学习系列之一(薪酬方案+基础) SQL Server 学习系列之二(日期格式问题) SQL Server 学习系列之三(SQL ...
- 【SQL Server 学习系列】-- sql 随机生成中文名字
原文:[SQL Server 学习系列]-- sql 随机生成中文名字 ,) )) -- 姓氏 ,) )) -- 名字 INSERT @fName VALUES ('赵'),('钱'),('孙'),( ...
- 【SQL Server 学习系列】-- 清除SQL Server 2012连接过的服务器名称
需要删除两个地方,删除前请注意备份! 1. %AppData%\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin 2. %A ...
- 【SQL Server 学习系列】-- SQL查询数据库表字段值不为空或Null的所有列
) set @TableName = 'Agency' -- 表名 declare @querySql nvarchar(max) set @querySql = 'select ' ) declar ...
- 【SQL Server 学习系列】-- 获取字符串中出现某字符的次数及字符某次出现的下标
) = '1_BB_CC_DD_AA_EE_YY_WW_HH_GG' --// 1. 获取下划线在字符串中出现的次数 SELECT LEN(@Str) - LEN(REPLACE(@Str, '_', ...
- 【SQL Server 学习系列】-- ConnectionTimeout、CommandTimeout和BulkCopyTimeout
1. SqlConnection.ConnectionTimeout获取在尝试建立连接时终止尝试并生成错误之前所等待的时间.单位:秒默认值:15秒设置为0时,表示无限制 2. SqlCommand.C ...
- 【SQL Server 学习系列】-- 收缩数据库文件大小
USE WebExam; GO ALTER DATABASE WebExam SET RECOVERY SIMPLE; GO -- 收缩文件到 1 MB. ); GO ALTER DATABASE W ...
- 【SQL Server 学习系列】-- 随机生成日期时间的SQL脚本
DECLARE @dt1 DATETIME,@dt2 DATETIME,@a BIGINT,@b BIGINT SET @dt1='2010-01-01'--开始日期 SET @dt2='2010-0 ...
随机推荐
- Linux Shell基础 环境变量配置文件
source命令:使环境变量配置文件强制生效 source 命令会强制执行脚本中的全部命令,而忽略脚本文件的权限.该命令主要用于让重新配置的环境变量配置文件强制生效.source 命令格式如下: [r ...
- Linux设置默认启动命令行,而不是图形界面
无论是作为上线的服务器还是开发中的虚拟机来说,都是没有必要启动图形界面的,而图形界面占用的内存还是很大的.枫竹梦本文就介绍如何设置来默认启动命令行. 其实就是设置系统的启动级别. CentOS的设置 ...
- php数组函数-array_merge()
array_merge()函数把两个或多个数组合并为一个数组. 如果键名有重复,该键的键值为最后一个键名对应的值.如果数组是数字 索引,则键名会以连续方式重新索引. 注:如果仅仅向array_merg ...
- problem-1003(恢复一下)
问题: Given a sequence a[1],a[2],a[3]......a[n], your job is to calculate the max sum of a sub-sequenc ...
- shell中嵌套执行expect命令实例(利用expect实现自动登录)
expect是 #!/bin/bashpasswd='123456'/usr/bin/expect <<EOFset time 30spawn ssh root@192.168.76.10 ...
- Luogu-1527 [国家集训队]矩阵乘法
Luogu-1527 [国家集训队]矩阵乘法 题面 Luogu-1527 题解 昨天学CDQ分治时做了一些题,但是因为题(wo)太(tai)水(lan)了(le)并没有整理 学了一晚上的整体二分,拿这 ...
- docker官方镜像库 搭建 jekins
先去docker hub 镜像官网下载jenkins 镜像(https://hub.docker.com/_/jenkins/): 其实就是在docker 中执行命令:docker pull jenk ...
- BZOJ 1941 kd-tree
模板题 题意说的可能有点不清楚 一开始的点必须在给定的n个点里面 所以枚举点 然后ask最大和最小值 估价函数中 最大值的写法和最小值不同 全部取max 而最小值在估价时 如果在某个点管辖的空间里 就 ...
- @RequestMapping
可以设定访问的目录,与访问的方式 对象可以是类,也可以是方法 @RequestMapping(value = "/say",method = RequestMethod.GET) ...
- javascript-DOM操作-留言板制作
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...