SQL SERVER函数大全 下载本文

6 7 8 - 10 11 12 106 (1) 107 (1) 108 9 或 109 (1, 2) 110 111 112 - - - 默认设置 + 毫秒 美国 日本 ISO dd mon yy mon dd, yy hh:mi:ss mon dd yyyy hh:mi:ss:mmmAM(或 PM) mm-dd-yy yy/mm/dd yymmdd yyyymmdd - 14 - - - - 13 或 113 (1, 2) 114 20 或 120 (2) 21 或 121 (2) 126 (4) 127(6, 7) 欧洲默认设置 + 毫秒 dd mon yyyy hh:mi:ss:mmm(24h) - ODBC 规范 hh:mi:ss:mmm(24h) yyyy-mm-dd hh:mi:ss(24h) ODBC 规范(带毫秒) yyyy-mm-dd hh:mi:ss.mmm(24h) ISO8601 带时区 Z 的 ISO8601。 yyyy-mm-ddThh:mi:ss.mmm(无空格) yyyy-mm-ddThh:mi:ss.mmmZ (无空格) dd mon yyyy hh:mi:ss:mmmAM dd/mm/yy hh:mi:ss:mmmAM - - 130 (1, 2) 131 (2) 回历 (5) 回历 (5) 1. 这些样式值将返回不确定的结果。包括所有 (yy)(不带世纪数位)样式和一部分

(yyyy)(带世纪数位)样式。

2. 默认值(style 0 或 100、9 或 109、13 或 113、20 或 120 以及 21 或 121)

始终返回世纪数位 (yyyy)。

3. 转换为 datetime 时输入;转换为字符数据时输出。

4. 为用于 XML 而设计。对于从 datetime 或 smalldatetime 到字符数据的转换,

其输出格式如上一个表所述。

5. 回历是有多种变体的日历系统。SQL Server 使用科威特算法。

a) 默认情况下,SQL Server 基于截止年份 2049 年来解释两位数的年份。换言

之,就是将两位数的年份 49 解释为 2049,将两位数的年份 50 解释为 1950。许多客户端应用程序(如基于自动化对象的应用程序)都使用截止年份 2030 年。SQL Server 提供了“两位数年份截止”配置选项,可通过此选项更改 SQL Server 使用的截止年份,从而对日期进行一致处理。建议您指定四位数年份。

6. 仅支持从字符数据转换为 datetime 或 smalldatetime。仅表示日期或时间成分的

字符数据转换为 datetime 或 smalldatetime 数据类型时,未指定的时间成分设置为 00:00:00.000,未指定的日期成分设置为 1900-01-01。

7. 使用可选的时间区域指示符 (Z) 更便于将具有时区信息的 XML datetime 值映射

到没有时区的 SQL Server datetime 值。Z 是时区 UTC-0 的指示符。其他时区则以 + 或 - 方向的 HH:MM 偏移量来指示。例如:2006-12-12T23:45:12-08:00。 从 smalldatetime 转换为字符数据时,包含秒或毫秒的样式将在这些位置上显示零。使用相应的 char 或 varchar 数据类型长度从 datetime 或 smalldatetime 值转换时,可截断不需要的日期部分。

从样式包含时间的字符数据转换为 datetimeoffset 时,将在结果末尾追加时区偏移量。 这个函数的第三个参数是可选的,该参数用于接收格式代码整型值。表中的例子用于对DateTime数据类型进行转换。在转换SmallDateTime数据类型时,格式不变,但一些元素会显示为0,因为该数据类型不支持毫秒。以下的脚本例子将输出格式化的日期:

SELECT 'Default Date:' + CONVERT(Varchar(50), GETDATE(), 100) Default Date: Apr 25 2005 1:05PM

SELECT 'US Date:' + CONVERT(Varchar(50), GETDATE(), 101) US Date: 04/25/2005

SELECT 'ANSI Date:' + CONVERT(Varchar(50), GETDATE(), 103) ANSI Date: 2005.04.25

SELECT 'UK/French Date:' +CONVERT (Varchar(50), GETDATE(), 103) UK/French Date: 25/04/2OO5

SELECT 'German Date:' + CONVERT(Varchar(50), GETDATE(), 104) German Date: 25.04.2005

格式代码0,1和2也可用于数字类型,它们对小数与千位分隔符格式产生影响。而不同的数据类型所受的影响是不一样的。一般来说,使用格式代码0(或者不指定这个参数的值),将返回该数据类型最惯用的格式。使用1或者2通常显示更为详细或者更精确的值。以下例子使用格式代码0:

DECLARE @Num Money SET @Num = 1234.56 SELECT CONVERT(varchar(50), @Num, 0)

返回结果如下: 1234.56

使用值1则返回如下结果: 1,234.56

使用值2则返回如下结果: 1234.5600

以下例子和上例相同,但是使用Float类型: DECLARE @Num float SET @Num = 1234.56 SELECT CONVERT(varchar(50), @Num, 2)

使用值0不会改变所提供的格式,但是使用值1或2将返回以科学计数法表示的数字,后者使用了15位小数:

1.23456000000000e+003 STR()函数

这是一个将数字转换为字符串的快捷函数。这个函数有3个参数:数值、总长度和小数位数。如果数字的整数位数和小数位数(要加上小数点占用的一个字符)的总和小于总长度,对结果中左边的字符将用空格填充。在下面第1个例子中,包括小数点在内一共是5个字符。结果显示在网格中,显然左边的空格被填充了。这个调用指定,总长度为8个字符,小数位为4位:

SELECT STR(123.4, 8, 4) 结果值的右边以0填充:123.4000。

下面给函数传递了一个10字符的值,并指定结果包含8个字符,有4个小数位: SELECT STR(123.456789, 8, 4)

只有将这个结果截断才能符合要求。STR()函数对最后一位进行四舍五入:123.4568。现在,如果为函数传递数字1,并指定结果包含6个字符,有4个小数位,STR()函数将用0补足右边的空位:

SELECT STR(1, 6, 4) 1.0000

然而,如果指定的总长度大于整数位数、小数点和小数位数之和,结果值的左边将用空格补齐:

SELECT STR(1, 6, 4) 1.0000

SELECT STR(1, 12, 4) ---------- 1.0000 游标函数与变量

游标可以处理多行数据,在过程循环中一次访问一行。和基于集合的高效操作相比,这个功能对系统资源的消耗更大。可以用一个函数和两个全局变量来管理游标操作。 CURSOR_STATUS()函数

这个函数返回一个整型值,表示传递给这个函数的游标类型变量的状态。有很多不同类型的游标会影响这个函数的操作。为简单起见,下表列出了这个函数的常见返回值。 返 回 值 1 0 -1 -2 -3

@@CURSOR_ROWS全局变量

这个变量是一个整型值,表示在当前连接中打开的游标中的行数。根据游标类型,这个值也能不代表结果集中的实际行数。 @@FETCH_STATUS全局变量

这个变量是一个标记,用于表示当前游标指针的状态。这个变量主要用来判断某行是否存在,以及在执行了FETCH NEXT语句后,是否已执行到结果集的尾部。打开游标时,@@FETCH_STATUS变量值为-1。一旦把第一个值放在游标中,@@FETCH_STATUS变量值就变成0。当不再把更多的行放在游标中时,该变量的值将变回-1。 日期函数

这些函数可以操作DateTime与SmallDateTime类型的值。有些函数可用于解析日期值的日期与时间部分,有些函数可用于比较、操纵日期/时间值。日期数据类型的区别如下表所示。

说 明 游标包含一行或多行(动态游标包含0行或者多行) 游标不包含行 游标已关闭 游标未分配 游标不存在