(
id int,
time datetime --SQL里自带时间格式
)
insert into simp(id,time) values (100,'2005-3-23 11:23:25')
go
select * from simp
drop table simp
决定输入的日期如何解释的是set dateformat设置
SET DATEFORMAT
设置用于输入 datetime 或 smalldatetime 数据的日期部分(月/日/年)的顺序。
语法
SET DATEFORMAT { format | @format_var }
参数
format | @format_var
是日期部分的顺序。可以是 Unicode 或转换为 Unicode 的 DBCS。有效参数包括 mdy、dmy、ymd、ydm、myd 和 dym。美国英语默认值是 mdy。
注释
该设置仅用在将字符串转换为日期值时的解释中。它对日期值的显示没有影响。
SET DATEFORMAT 的设置是在执行或运行时设置,而不是在分析时设置。
权限
SET DATEFORMAT 权限默认授予所有用户。
示例
下例使用不同的日期格式处理不同格式的日期字符串。
SET DATEFORMAT mdy
GO
DECLARE @datevar datetime
SET @datevar = '12/31/98'
SELECT @datevar
GO
SET DATEFORMAT ydm
GO
DECLARE @datevar datetime
SET @datevar = '98/31/12'
SELECT @datevar
GO
SET DATEFORMAT ymd
GO
DECLARE @datevar datetime
SET @datevar = '98/12/31'
SELECT @datevar
GO
首先要知道数据库排序规则的含义,如Chinese_PRC_CI_AS就可以不区分大小写了,下面为Chinese_PRC打头的规则:_BIN
二进制排序
_CI_AI
_CI_AI_WS
不区分大小写、不区分重音、不区分假名类型、区分全半角
_CI_AI_KS
不区分大小写、不区分重音、区分假名类型、不区分全半角
_CI_AI_KS_WS
不区分大小写、不区分重音、区分假名类型、区分全半角
_CI_AS
不区分大小写、区分重音、不区分假名类型、不区分全半角
_CI_AS_WS
不区分大小写、区分重音、不区分假名类型、区分全半角
_CI_AS_KS
不区分大小写、区分重音、区分假名类型、不区分全半角
_CI_AS_KS_WS
不区分大小写、区分重音、区分假名类型、区分全半角
_CS_AI
区分大小写、不区分重音、不区分假名类型、不区分全半角
_CS_AI_WS
区分大小写、不区分重音、不区分假名类型、区分全半角
_CS_AI_KS
区分大小写、不区分重音、区分假名类型、不区分全半角
_CS_AI_KS_WS
区分大小写、不区分重音、区分假名类型、区分全半角
_CS_AS
区分大小写、区分重音、不区分假名类型、不区分全半角
_CS_AS_WS
区分大小写、区分重音、不区分假名类型、区分全半角
_CS_AS_KS
区分大小写、区分重音、区分假名类型、不区分全半角
_CS_AS_KS_WS
区分大小写、区分重音、区分假名类型、区分全半角
如需要对数据库重新进行规则设定,具体步骤如下:
1、找到sql2005
的安装包
2、执行下面的批处理,指定某种规则,如Chinese_PRC_CI_AS
内容如下:
cd
D:\SQL
Server
2005\SQL
Server
x86\Servers
start
/wait
setup.exe
/qb
INSTANCENAME=MSSQLSERVER
REINSTALL=SQL_Engine
REBUILDDATABASE=1
SAPWD=sa
SQLCOLLATION=Chinese_PRC_CI_AS
3、重新附加一下数据库就发现排序规则变更了。
给你举个例子:a,b两个字段:
1,3
4,3
1,4
2,6
对它们排序:
order by a,b
结果:
1,3
1,4
2,6
4,3
解释:
先按a 字段排序,得1,1,2,4
如果出现a字段相同的情形,按b字段排序得到:1,3;1,4;
b字段只是在当a字段相同的时候才用到。
同理group by中也是这个逻辑。
这个逻辑所有数据库中通用。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)