在设计时,我们将[DOJInGovrService]
字段设为varchar
数据类型
现在,当我们按此参数(DOJInGovrService
)按升序尝试排序时,它没有给出所需的结果
我知道这是数据类型问题,但我现在无法更改数据类型,因为已经输入了数据。
SELECT ED.class,
ED.CurrentOfficePlace,
ED.DOB,
ED.DOJInCurrentOff,
ED.DOJInGovrService,
ED.DOJInSamvarg,
ED.EmpName,
ED.HomePlace, ED.Qualification
FROM tbl_EmplyeesBiodata ED
ORDER BY DOJInGovrService asc
输入日期的格式为dd-MM-yyyy
(即28-08-2004)。
请帮帮我
答案 0 :(得分:2)
尝试将其转换为日期时间
select ED.class,ED.CurrentOfficePlace,ED.DOB,ED.DOJInCurrentOff,ED.DOJInGovrService,ED.DOJInSamvarg,ED.EmpName,ED.HomePlace,ED.Qualification
from tbl_EmplyeesBiodata ED
order by convert(date,DOJInGovrService,105) asc
这只是直接解决方案。最好的方法是使用date
类型创建新列。该列可帮助您创建不cast
或convert
。
答案 1 :(得分:2)
这只是始终使用适当数据类型的众多原因之一
即使表中有数据,也可以使用alter table
ddl语句更改数据类型:
ALTER TABLE tableName
ALTER COLUMN ColumnName datetime2;
但是,您应该首先复制此表并尝试复制,这样如果它弄乱了您的数据,您将不会冒任何风险。
如果改变成功,那么在你的直播桌上进行。如果没有,你可以采用不同的方法,涉及这些阶段:
DOJInGovrService
列重命名为DOJInGovrService_old
。 use sp_RENAME.
DOJInGovrService
ddl stement添加具有正确数据类型(datetime2)的列alter table
。 DOJInGovrService
中的值更新新的DOJInGovrService_old
列。您可能需要使用convert
。DOJInGovrService_old
ddl语句删除alter table
列。