• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

(续前)SQLServer常见问题应对_sqlserver

sqlserver 搞代码 3年前 (2018-06-16) 89次浏览 已收录 0个评论

(续前)sqlserver常见问题应对

http://www.gaodaima.com/35864.html(续前)SQLServer常见问题应对_sqlserver

版权所有©ashuixu转载请保持完整并注明出处

SQL语句部分

5、“令人头疼”的日期处理

问题:你是否也有过面对日期处理时的彷徨无措么?

解答:你是否了解以下事实(摘选自SQLServer2000联机帮助-datetime 数据类型:概述):

A.日期的存储。

datetime

从 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和时间数据,精确度为百分之三秒(等于 3.33 毫秒或 0.00333 秒)。如下表所示,把值调整到 .000、.003、或 .007 秒的增量。

smalldatetime

从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据精确到分钟。29.998 秒或更低的 smalldatetime 值向下舍入为最接近的分钟,29.999 秒或更高的 smalldatetime 值向上舍入为最接近的分钟。

Microsoft SQL Server 用两个 4 字节的整数内部存储 datetime 数据类型的值。第一个 4 字节存储 base date(即 1900 年 1 月 1 日)之前或之后的天数。基础日期是系统参考日期。不允许早于 1753 年 1 月 1 日的 datetime 值。另外一个 4 字节存储以午夜后毫秒数所代表的每天的时间。

smalldatetime 数据类型存储日期和每天的时间,但精确度低于 datetime。SQL Server 将 smalldatetime 的值存储为两个 2 字节的整数。第一个 2 字节存储 1900 年 1 月 1 日后的天数。另外一个 2 字节存储午夜后的分钟数。日期范围从1900 年 1 月 1 日到 2079 年 6 月 6 日,精确到分钟。

B.没有只存储时间或日期的独立的时间和日期数据类型。当设置 datetime 或 smalldatetime 值时,如果只指定时间,则日期默认为 1900 年 1 月 1 日。如果只指定日期,则时间默认为 12:00 AM(午夜)。

C.下面是一些使用日期和时间数据的准则:

· 若要对日期和时间进行精确搜索匹配,请使用等号(=)。Microsoft SQL Server 以 12:00:00:000 AM(默认值)的精确时间形式返回年、月、日都完全匹配的日期和时间值。

· 若要搜寻日期或时间的一部分,请使用 LIKE 运算符。SQL Server 首先把数据转换为 datetime 格式然后再转换为 varchar 格式。由于标准时间显示格式不包括秒和毫秒,不能使用 LIKE 和匹配模式对其搜索,除非使用 CONVERT 函数并把 style 参数设为 9 或 109。有关部分日期和时间搜索的更多信息,请参见 LIKE。

· SQL Server 在运行时计算 datetime 常量。用于某种语言期望的日期格式的日期字符串,如果由使用不同语言和日期格式设置的连接来执行查询,则可能无法识别。例如,下面的视图对于语言设置为美国英语的连接可以工作正常,但对于其它语言设置的连接就不能工作正常:

    CREATE VIEW USA_Dates AS

    SELECT *

    FROM Northwind.dbo.Orders

    WHERE OrderDate < ‘May 1, 1997’

当在查询中使用 datetime 常量,而且该查询由使用不同语言设置的连接执行时,需确保日期对于所有语言设置均是可以接受的。对于国际数据库中永久对象中的 datetime 常量,比如表约束和查看 WHERE 子句,必须同样小心。有关所有语言设置都解释为相同的日期格式的更多信息,请参见编写国际 Transact-SQL 语句。

SQL Server 可以识别以下列格式括在单引号 (‘) 中的日期和时间:

· 字母日期格式(例如,’April 15, 1998’)

· 数字日期格式(例如,’4/15/1998’、’April 15,1998’)

· 未分隔的字符串格式(例如’19981207’、’December 12, 1998’)  

6、设计期无法确定的SQL语句

问题:在写存储过程时,有些SQL语句在设计期是不确定的,这样的SQL语句怎么写呢?

解答:用系统存储过程sp_executesql。

7、常用且重要函数、关键字和子句

A.CASE – 计算条件列表并返回多个可能结果表达式之一

B.ISNULL – 使用指定的替换值替换 NULL

C.HAVING 子句 – 指定组或聚合的搜索条件。HAVING 通常与 GROUP BY 子句一起使用。如果不使用 GROUP BY 子句,HAVING 的行为与 WHERE 子句一样。

欢迎大家阅读《(续前)SQLServer常见问题应对_sqlserver,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址