按案例转换转换错误 [英] Order By Case Cast Convert Error

查看:56
本文介绍了按案例转换转换错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个SQL存储过程,它使用Case语句来确定订单依据。对于其中一个Case语句,我试图将
变为Char字段的Date字段,但是我不能

让它工作。有人可以看看下面我的代码和

告诉我我做错了什么。谢谢。


ORDER BY

案例当@SortBy =''dttm_stamp''然后dttm_stamp结束,

案例当@ SortBy =''Event_Date1''那么CAST(CONVERT(char(10),

Event_Date1,101)as datetime)结束,

CASE WHEN @SortBy =''FullName ''THEN Emp_lastname +'',''+

Emp_firstname End,

CASE WHEN @SortBy =''FullName Desc''THEN Emp_lastname +'',''+

Emp_firstname结束DESC,

情况@SortBy =''Emp_SSN''那么Emp_SSN结束

解决方案



< jg ******* @ cybergroup.com>在消息中写道

新闻:11 ********************* @ c13g2000cwb.googlegro ups.com ...

我创建了一个SQL存储过程,它使用Case语句来确定Order By。对于其中一个Case语句,我试图将Char字段转换为Order By中的Datetime,但是我不能让它工作。有人可以看看下面的代码和
告诉我我做错了什么。谢谢。

ORDER BY
情况@SortBy =''dttm_stamp''然后dttm_stamp结束,
情况@SortBy =''Event_Date1''那么CAST(CONVERT( char(10),
Event_Date1,101)as datetime)结束,
CASE WHEN @SortBy =''FullName''THEN Emp_lastname +'',''+
Emp_firstname End,
CASE WHEN @SortBy =''FullName Desc''THEN Emp_lastname +'',''+
Emp_firstname结束DESC,
CASE WHEN @SortBy =''Emp_SSN''那么Emp_SSN结束



什么是无法让它工作意思?你得到错误,或者你得到了意外的结果吗?最好的想法可能是发布CREATE TABLE和

INSERT语句来设置一个测试用例来说明你的问题。

http://www.aspfaq.com/etiquette.asp?id=5006


Simon


2005年1月17日09:42:05 -0800, jg ******* @ cybergroup.com 写道:

我创建了一个SQL存储过程,它使用Case语句来<确定订单依据。对于其中一个Case语句,我试图将Char字段转换为Order By中的Datetime,但是我不能让它工作。有人可以看看下面的代码和
告诉我我做错了什么。谢谢。


你好jquilford,


我想这就是给你带来麻烦的一线:

情况@SortBy =''Event_Date1''那么CAST(CONVERT(char(10),
Event_Date1,101)as datetime)结束,




你正在将datetime变量转换为美国mm / dd / yyyy

格式,这种格式不太适合排序。然后你将

转换回日期时间,运行各种风险,因为这种格式是

不明确 - 它很容易被误解为dd / mm / yyyy,导致要么错了

排序或转换错误。


如果你打算从datetime列剥离时间部分,那么

您只能按日期部分订购,使用


CASE WHEN @SortBy =''Event_Date1''那么DATEADD(白天,DATEDIFF(白天,

' '20000101'',Event_Date1),''20000101'')


或者,如果您真的想通过转换为字符串和返回来实现它,请使用

safe yyyymmdd格式:


CASE WHEN @SortBy =''Event_Date1''那么CAST(CONVERT(char(8),

Event_Date1,112)作为日期时间)结束,


Best,Hugo

-


(删除_NO_和_SPAM_来获取我的电子邮件地址)


Hugo Kornelis(hugo@pe_NO_rFact.in_SPAM_fo)wri tes:

或者,如果你真的想通过转换为字符串和返回来实现它,请使用
安全yyyymmdd格式:

CASE WHEN @SortBy =' 'event_Date1''那么CAST(CONVERT(char(8),
Event_Date1,112)as datetime)结束,




或者简单地说:


CASE WHEN @SortBy =''Event_Date1''

THEN CONVERT(char(8),Event_Date1,112)

结束,


然后,我们再也不知道jguildford的意思是我无法让它工作。


-

Erland Sommarskog,SQL Server MVP, es****@sommarskog.se


SQL Server SP3联机丛书
http://www.microsoft.com/sql/techinf...2000/books.asp


I have created a SQL Stored Procedure that uses a Case statement to
determine the Order By. For one of the Case statements I am trying to
turn a Char field into Datetime in for the Order By, however I can not
get it to work. Can someone please take a look and my code below and
tell me what I am doing wrong. Thank you.

ORDER BY
CASE WHEN @SortBy = ''dttm_stamp'' THEN dttm_stamp End,
CASE WHEN @SortBy = ''Event_Date1'' THEN CAST(CONVERT(char(10),
Event_Date1,101) as datetime) End,
CASE WHEN @SortBy = ''FullName'' THEN Emp_lastname + '', '' +
Emp_firstname End,
CASE WHEN @SortBy = ''FullName Desc'' THEN Emp_lastname + '', '' +
Emp_firstname End DESC,
CASE WHEN @SortBy = ''Emp_SSN'' THEN Emp_SSN End

解决方案


<jg*******@cybergroup.com> wrote in message
news:11*********************@c13g2000cwb.googlegro ups.com...

I have created a SQL Stored Procedure that uses a Case statement to
determine the Order By. For one of the Case statements I am trying to
turn a Char field into Datetime in for the Order By, however I can not
get it to work. Can someone please take a look and my code below and
tell me what I am doing wrong. Thank you.

ORDER BY
CASE WHEN @SortBy = ''dttm_stamp'' THEN dttm_stamp End,
CASE WHEN @SortBy = ''Event_Date1'' THEN CAST(CONVERT(char(10),
Event_Date1,101) as datetime) End,
CASE WHEN @SortBy = ''FullName'' THEN Emp_lastname + '', '' +
Emp_firstname End,
CASE WHEN @SortBy = ''FullName Desc'' THEN Emp_lastname + '', '' +
Emp_firstname End DESC,
CASE WHEN @SortBy = ''Emp_SSN'' THEN Emp_SSN End



What does "can not get it to work" mean? Do you get errors, or do you get
unexpected results? The best idea would probably be to post CREATE TABLE and
INSERT statements to set up a test case which illustrates your problem.

http://www.aspfaq.com/etiquette.asp?id=5006

Simon


On 17 Jan 2005 09:42:05 -0800, jg*******@cybergroup.com wrote:

I have created a SQL Stored Procedure that uses a Case statement to
determine the Order By. For one of the Case statements I am trying to
turn a Char field into Datetime in for the Order By, however I can not
get it to work. Can someone please take a look and my code below and
tell me what I am doing wrong. Thank you.
Hi jquilford,

I guess that this is the line that''s giving you trouble:
CASE WHEN @SortBy = ''Event_Date1'' THEN CAST(CONVERT(char(10),
Event_Date1,101) as datetime) End,



You are converting the datetime variable to the american mm/dd/yyyy
format, which is not very well suited for sorting. Then you are converting
it back to datetime, running alll kinds of risks because this format is
ambiguous - it''s easily misinterpreted as dd/mm/yyyy, causing either wrong
sorting or conversion errors.

If your intention is to strip the time part from the datetime column, so
you can order by the date part only, use

CASE WHEN @SortBy = ''Event_Date1'' THEN DATEADD(day, DATEDIFF(day,
''20000101'', Event_Date1), ''20000101'')

Or, if you really want to do it by conversion to string and back, use the
safe yyyymmdd format:

CASE WHEN @SortBy = ''Event_Date1'' THEN CAST(CONVERT(char(8),
Event_Date1,112) as datetime) End,

Best, Hugo
--

(Remove _NO_ and _SPAM_ to get my e-mail address)


Hugo Kornelis (hugo@pe_NO_rFact.in_SPAM_fo) writes:

Or, if you really want to do it by conversion to string and back, use the
safe yyyymmdd format:

CASE WHEN @SortBy = ''Event_Date1'' THEN CAST(CONVERT(char(8),
Event_Date1,112) as datetime) End,



Or simply say:

CASE WHEN @SortBy = ''Event_Date1''
THEN CONVERT(char(8), Event_Date1,112)
End,

Then again, we have no idea jguildford mean "I can not get it to work".

--
Erland Sommarskog, SQL Server MVP, es****@sommarskog.se

Books Online for SQL Server SP3 at
http://www.microsoft.com/sql/techinf...2000/books.asp


这篇关于按案例转换转换错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆