sqlserver 中nvarchar和date类型的转化问题 sqlserver日期格式 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 20080101这种格式如果转成date类型就会加-,只能转int、nvarchar/varchar这些类型 楼主应该这样:SELECT DateKey,cast(datekey as date) k1,convert(varchar(10),cast(datekey as date),122) as k2,convert(varchar(10),cast(datekey as date),112) as k3,convert(varchar(19),cast(datekey as datetime),120) as k4,year,Qufrom tbl 整合到cognos系统中就有影响了....前辈 您意思是20080101这种格式不能转换为日期类型的20080101格式? 整合到cognos系统中就有影响了....前辈 您意思是20080101这种格式不能转换为日期类型的20080101格式?纯日期格式里面没有20080101这种,这些是int或者字符型。你可以考虑用int啊 是varchar楼主转换后的仍是date型啊,sql server本身有个默认格式的,显示出来的肯定都一样了要么楼主在前台去处理(日期格式化),sql不用处理 完全逻辑矛盾的啊!如果是日期类型,内部就是一组二进制的值,值是不存在格式的。只有将值转换为字符串形式输出,才会用到格式。楼主你到底想干什么?.....用报表工具cognos做报表,需要“20080101”格式的date类型 同意10楼的说法. 值是不存在格式的值要以什么格式,我想你在cognos中可以设置的.而不是在sql上改格式.提供给cognos以日期类型,在cognos上设置日期格式。select cast(datekey as datetime) from tb1 完全逻辑矛盾的啊!如果是日期类型,内部就是一组二进制的值,值是不存在格式的。只有将值转换为字符串形式输出,才会用到格式。楼主你到底想干什么?.....用报表工具cognos做报表,需要“20080101”格式的date类型没有“20080101”格式的date类型这种东西!如果 cognos 需要字符串"20080101",你的数据库字段已经是字符串了,直接给它 datekey;如果 cognos 需要整数 20080101,给它 Convert(int, datekey);如果 cognos 需要日期 2008-1-1,给它 Convert(datetime,datekey,112),至于 cognos 准备如何输出,再设它的格式好了。 DateKey的nvarchar类型转成char或varchar类型更节省空间,转成DateTime类型后显示的格式会有变化。 数据类型是date,显示格式是YYYYMMDD吗?一般来说SQLServer只能做到数据类型是date,至于显示格式要看前台要怎么显示 前辈您这个逻辑让我有种不明觉厉的感觉,但有好像很有道理我尝试转换格式同样是把nvarchar转换为date,用cast函数转换另外一个表就OK,但同样的语法转换上面的表就报错,上面的表我也确认过,没有空值什么的 OutDate里面可能存在非法字符了可以先到sql server的查询分析器里select 一下,看是哪笔数据有问题,修正后再转换select cast(OutDate as date) from zg_sales_des SELECT Convert(datetime,'20140231',112)这不就出错了!所以日期数据还是用 datetime 存储,显示输出时再按需要格式化。否则多出各种麻烦来。用下面的语句找出错的数据吧。SELECT * FROM zg_sales_des WHERE ISDATE(outdate)=0 那就是了,楼主OutDate数据有非法字符了,点结果集看到了哪一笔了,下面一笔就是有问题的 Hyper-V虚拟机做sql 2005 数据库服务器可以吗? 关于DATETIME字段转换的问题目 数据导入的问题(继续前一贴) BCP将文本导入SQL SERVER数据库不成功,大家帮忙看下原因吧,谢谢了! 两个表列名相同,如何把它变成一张表? 关于sql server2000的局域网内服务器访问 采购管理系统的相关问题? 基础问题:定义列的描述的sql语句怎么写? 菜菜的问题,sql server中如何实现自动编号,就像access中的自动编号字段 急用!求助如何把 表#temp每一行的记录与12个蓝号分别一一组合到一起 多列数据操作问题 SQL Server 对等事务复制---读写分离
,cast(datekey as date) k1
,convert(varchar(10),cast(datekey as date),122) as k2
,convert(varchar(10),cast(datekey as date),112) as k3
,convert(varchar(19),cast(datekey as datetime),120) as k4
,year
,Qu
from tbl
楼主转换后的仍是date型啊,sql server本身有个默认格式的,显示出来的肯定都一样了
要么楼主在前台去处理(日期格式化),sql不用处理
如果是日期类型,内部就是一组二进制的值,值是不存在格式的。
只有将值转换为字符串形式输出,才会用到格式。楼主你到底想干什么?
.....用报表工具cognos做报表,需要“20080101”格式的date类型
值是不存在格式的值要以什么格式,我想你在cognos中可以设置的.而不是在sql上改格式.
提供给cognos以日期类型,在cognos上设置日期格式。
select cast(datekey as datetime) from tb1
如果是日期类型,内部就是一组二进制的值,值是不存在格式的。
只有将值转换为字符串形式输出,才会用到格式。楼主你到底想干什么?
.....用报表工具cognos做报表,需要“20080101”格式的date类型
没有“20080101”格式的date类型这种东西!
如果 cognos 需要字符串"20080101",你的数据库字段已经是字符串了,直接给它 datekey;
如果 cognos 需要整数 20080101,给它 Convert(int, datekey);
如果 cognos 需要日期 2008-1-1,给它 Convert(datetime,datekey,112),至于 cognos 准备如何输出,再设它的格式好了。
我尝试转换格式同样是把nvarchar转换为date,用cast函数转换另外一个表就OK,但同样的语法转换上面的表就报错,上面的表我也确认过,没有空值什么的
可以先到sql server的查询分析器里select 一下,看是哪笔数据有问题,修正后再转换select cast(OutDate as date) from zg_sales_des
这不就出错了!
所以日期数据还是用 datetime 存储,显示输出时再按需要格式化。
否则多出各种麻烦来。用下面的语句找出错的数据吧。
SELECT *
FROM zg_sales_des
WHERE ISDATE(outdate)=0