急!为什么我把SQL的datetime改为varchar类型后数据被破坏了?

xwoniu 2009-12-20 11:26:10
类似这样的时间类型 20:44:33全部显示为 12 30 18,好郁闷。我都用8字节代替,原先datetime(8)现在为varchar(8)
好像之前可以这样的!!!
...全文
139 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanglinqiang 2009-12-20
  • 打赏
  • 举报
回复
declare @time datetime 
set @time='20:44:33'

select convert(varchar(8),@time,108)

/*

--------
20:44:33

(1 行受影响)
*/
--小F-- 2009-12-20
  • 打赏
  • 举报
回复
--日期转换参数,值得收藏
select CONVERT(varchar, getdate(), 120 )
2004-09-12 11:06:08

select replace(replace(replace(CONVERT(varchar, getdate(), 120 ),'-',''),' ',''),':','')
20040912110608

select CONVERT(varchar(12) , getdate(), 111 )
2004/09/12

select CONVERT(varchar(12) , getdate(), 112 )
20040912

select CONVERT(varchar(12) , getdate(), 102 )
2004.09.12

其它我不常用的日期格式转换方法:

select CONVERT(varchar(12) , getdate(), 101 )
09/12/2004

select CONVERT(varchar(12) , getdate(), 103 )
12/09/2004

select CONVERT(varchar(12) , getdate(), 104 )
12.09.2004

select CONVERT(varchar(12) , getdate(), 105 )
12-09-2004

select CONVERT(varchar(12) , getdate(), 106 )
12 09 2004

select CONVERT(varchar(12) , getdate(), 107 )
09 12, 2004

select CONVERT(varchar(12) , getdate(), 108 )
11:06:08

select CONVERT(varchar(12) , getdate(), 109 )
09 12 2004 1

select CONVERT(varchar(12) , getdate(), 110 )
09-12-2004

select CONVERT(varchar(12) , getdate(), 113 )
12 09 2004 1

select CONVERT(varchar(12) , getdate(), 114 )
11:06:08.177
--小F-- 2009-12-20
  • 打赏
  • 举报
回复
不要直接改
用convert(varchar(10),col,120)
yanglinqiang 2009-12-20
  • 打赏
  • 举报
回复
用convert函数转化
misterliwei 2009-12-20
  • 打赏
  • 举报
回复
这是因为你的DATETIME类型的数据值为:18XX-12-30 20:44:33
当数据类型变成:VARCHAR(50)时,变成:12 30 18XX 8:44PM
由于变成了VARCHAR(8),于是只截取前8位:12 30 18

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧