当前位置: 代码迷 >> Sql Server >> sqlserver 中nvarchar和date类型的转化有关问题
  详细解决方案

sqlserver 中nvarchar和date类型的转化有关问题

热度:37   发布时间:2016-04-24 10:08:18.0
sqlserver 中nvarchar和date类型的转化问题
表结构如下:

datekey为nvarchar类型 现在想保持datekey的格式不变的前提下,将datekey转换为日期类型我尝试如下

转换出来格式总是个不对,请大神指教下,该怎么转换?
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:
datekey为nvarchar类型 现在想保持datekey的格式不变的前提下,将datekey转换为日期类型

完全逻辑矛盾的啊!
如果是日期类型,内部就是一组二进制的值,值是不存在格式的
只有将值转换为字符串形式输出,才会用到格式。

楼主你到底想干什么?

.....用报表工具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,但同样的语法转换上面的表就报错,上面的表我也确认过,没有空值什么的

SELECT Convert(datetime,'20140231',112)

这不就出错了!
所以日期数据还是用 datetime 存储,显示输出时再按需要格式化。
否则多出各种麻烦来。

用下面的语句找出错的数据吧。
SELECT *
  FROM zg_sales_des
 WHERE ISDATE(outdate)=0
  相关解决方案