SQL Server 里的日期和时间函数

   这些标量函数对日期和时间输入值执行操作,并返回一个字符串、数字值或日期和时间值。

  下表列出日期和时间函数以及它们的确定性属性。

DATEADD 具有确定性

DATEDIFF 具有确定性

DATENAME 不具有确定性

DATEPART 除了用作

DATEPART (dw, date) 外都具有确定性。dw 是工作日的日期部分,取决于由设置每周第一天的

SET DATEFIRST 所设置的值

DAY 具有确定性

GETDATE 不具有确定性

GETUTCDATE 不具有确定性

MONTH 具有确定性

YEAR 具有确定性

     确定性函数和非确定性函数所有的函数都是确定性或非确定性的: 在使用特定的输入值集调用确定性函数的任何时候,它们总是返回相同的结果。 在每次使用特定的输入值集调用非确定性函数时,它们可能返回不同的结果。 函数是否为确定性函数或非确定性函数称为函数的确定性。 例如,DATEADD 内置函数是确定性函数,因为对于其三个参数的任何给定参数值集总是返回相同的结果。GETDATE 不是确定性函数,因为总是使用相同的参数唤醒调用它,而它在每次执行时返回结果都不同。

 --------------------------------------------------------------------------------

打印出 pubs 数据库中标题的时间结构的列表。此时间结构表示当前发布日期加上 21 天。

USE pubs

GO

SELECT DATEADD(day, 21, pubdate) AS timeframe FROM titles

GO

--------------------------------------------------------------------------------

确定在 pubs 数据库中标题发布日期和当前日期间的天数。

USE pubs

GO

SELECT DATEDIFF(day, pubdate, getdate()) AS no_of_days FROM titles

GO

--------------------------------------------------------------------------------

从 GETDATE 返回的日期中提取月份名。SELECT DATENAME(month, getdate()) AS 'Month Name'

 --------------------------------------------------------------------------------

GETDATE 函数返回当前日期;然而,比较时并不总是需要完整的日期信息(通常只是对日期的一部分进行比较)。

SELECT DATEPART(month, GETDATE()) AS 'Month Number'

--------------------------------------------------------------------------------

日期部分

缩写

 year yy, yyyy

quarter qq, q

month mm, m

dayofyear dy, y day dd, d

week wk, ww weekday dw

Hour hh

minute mi, n

second ss, s

millisecond ms

以上这个表如果你会的语言多的话可能会觉得太乱了, 各种语言有些地方是不一样的,但不知道您有没有发现, 不管什么语言, 他们都可以直接用全称而不必非要用缩写.这个我比较喜欢,什么时候不会写就直接用全称.原创作者:柳永法(yongfa365)'Blog

----------------------------------------------------

CHARINDEX函数返回字符或者字符串在另一个字符串中的起始位置。

CHARINDEX函数调用方法如下:

CHARINDEX ( expression1 , expression2 [ , start_location ] ) Expression1是要到expression2中寻找的字符中,start_location是CHARINDEX函数开始在expression2中找expression1的位置。

CHARINDEX函数返回一个整数,返回的整数是要找的字符串在被找的字符串中的位置。

假如CHARINDEX没有找到要找的字符串,那么函数整数“0”。让我们看看下面的函数命令执行的结果: CHARINDEX('SQL', 'Microsoft SQL Server') 这个函数命令将返回在“Microsoft SQL Server”中“SQL”的起始位置,在这个例子中,CHARINDEX函数将返回“S”在“Microsoft SQL Server”中的位置11。接下来,我们看这个CHARINDEX命令: CHARINDEX('7.0', 'Microsoft SQL Server 2000') 在这个例子中,CHARINDEX返回零,因为字符串“7.0” 不能在“Microsoft SQL Server”中被找到。接下来通过两个例子来看看如何使用CHARINDEX函数来解决实际的T-SQL问题。

-------------------------------------

将某种数据类型的表达式显式转换为另一种数据类型。

CAST 和 CONVERT 提供相似的功能。

语法使用 CAST:CAST ( expression AS data_type )使用 CONVERT:CONVERT (data_type[(length)], expression [, style])参数expression是任何有效的 Microsoft SQL Server" 表达式。

有关更多信息,请参见表达式。

data_type目标系统所提供的数据类型,包括 bigint 和 sql_variant。

不能使用用户定义的数据类型。有关可用的数据类型的更多信息,请参见数据类型。lengthnchar、nvarchar、char、varchar、binary 或 varbinary 数据类型的可选参数。

style日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。 将某种数据类型的表达式显式转换为另一种数据类型。

有关可用的数据类型的更多信息,请参见数据类型。日期格式样式,借以将 datetime 或 smalldatetime 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型);或者字符串格式样式,借以将 float、real、money 或 smallmoney 数据转换为字符数据(nchar、nvarchar、char、varchar、nchar 或 nvarchar 数据类型)。当转换为字符数据时输出。 隐性转换对于用户是不可见的。 SQL Server 自动将数据从一种数据类型转换成另一种数据类型。例如,如果一个 smallint 变量和一个 int 变量相比较,这个 smallint 变量在比较前即被隐性转换成 int 变量。显式转换使用 CAST 或 CONVERT 函数。CAST 和 CONVERT 函数将数值从一个数据类型(局部变量、列或其它表达式)转换到另一个数据类型。例如,下面的 CAST 函数将数值 $157.27 转换成字符串 ''$157.27'':CAST ( $157.27 AS VARCHAR(10) )CAST 函数基于 SQL-92 标准并且优先于 CONVERT。当从一个 SQL Server 对象的数据类型向另一个转换时,一些隐性和显式数据类型转换是不支持的。例如,nchar 数值根本就不能被转换成 image 数值。nchar 只能显式地转换成 binary,隐性地转换到 binary 是不支持的。nchar 可以显式地或者隐性地转换成 nvarchar。当处理 sql_variant 数据类型时,SQL Server 支持将具有其它数据类型的对象隐性转换成 sql_variant 类型。然而,SQL Server 并不支持从 sql_variant 数据隐性地转换到其它数据类型的对象。

----------------------------------------------------------------------

trim 函数:去除数据中的空格。

rtrim代表去除右边的空格,

ltrim代表去除左边的空格例子:update TPrcJi set 中标项目=rtrim(中标项目),品牌=rtrim(品牌)去除 TPrcJi“中标项目”“品牌”右边的空格

----------------------------------------------------------------------

注意:这里说的delete是指不带where子句的delete语句 相同点 truncate和不带where子句的delete, 以及drop都会删除表内的数据 不同点: 1. truncate和 delete只删除数据不删除表的结构(定义) drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态. 2.delete语句是dml,这个操作会放到rollback segement中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发. truncate,drop是ddl, 操作立即生效,原数据不放到rollback segment中,不能回滚. 操作不触发trigger. 3.delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动 显然drop语句将表所占用的空间全部释放 truncate 语句缺省情况下见空间释放到 minextents个 extent,除非使用reuse storage; truncate会将高水线复位(回到最开始). 4.速度,一般来说: drop>; truncate >; delete 5.安全性:小心使用drop 和truncate,尤其没有备份的时候.否则哭都来不及 使用上,想删除部分数据行用delete,注意带上where子句. 回滚段要足够大. 想删除表,当然用drop 想保留表而将所有数据删除. 如果和事务无关,用truncate即可. 如果和事务有关,或者想触发trigger,还是用delete. 如果是整理表内部的碎片,可以用truncate跟上reuse stroage,再重新导入/插入数据

 

http://cache.baidu.com/c?m=9d78d513d98202f14fede53f5a569331594380123cd5d21768d4e216d524001e506692fb61624b5bc4c50d7071af5e2dece74771207254a09ab89f3adeace52a38f85423011b9206528d16f58d0067d621e347f4f542f0ba8762c0f58494c854249b0e5a67d9a0d2014155d73fae4964fefddf1f4a4213beea6362fc5a767f952846bd45fbe6353d54d5f1dc5f46d42aa73b57c8f1&p=8c7cc64ad1934ea853b88a0c5a48&user=baidu&fm=sc&query=sql+server+2000+%28ltrim%28rtrim%28%5B%B2%C4%C1%CF%B1%E0%BA%C5%5D%29%29+%3C%3E+%27%27%29&qid=8f783be40c368d9b&p1=2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值