日期:2014-05-17  浏览次数:20507 次

sql 日期数据类型转换
比如 我在数据库中存的有好几个字段,有的格式 2013-08-08 14:15:12    
   还有 2013-10-22   还有20130101 格式的  我想统一时间各位为
2013-10-10这个样式的!! 在线就指导 !   其中格式为20130101个数据类型为char
SQL. 日期格式

------解决方案--------------------
select substring(日期列,1,4)+'-'+substring(日期列,5,2)+'-'+substring(日期列,7,2)
------解决方案--------------------
select substring(日期列,1,4)+'-'+substring(日期列,5,2)+'-'+substring(日期列,7,2)
from tb
where isdate(日期列)=1--代表是日期类型或者可以转换成日期类型

对于isdate=0的数据,需要手动修改
------解决方案--------------------
做了一个实验,是这样吗:
create table tb(t1 datetime,t2 datetime,t3 char(20))

insert into tb
select '2013-08-08 14:15:12','2013-10-22','20130101' 


select convert(varchar(10),CAST(t1 as datetime),120),
       convert(varchar(10),CAST(t2 as datetime),120),
       convert(varchar(10),CAST(t3 as datetime),120)        
from tb
/*
(无列名)     (无列名)     (无列名)
2013-08-08 2013-10-22 2013-01-01
*/

------解决方案--------------------

select convert(varchar(10),CAST('20130101' as datetime),120)

------解决方案--------------------
select substring(日期列,1,4)+substring(日期列,5,2)+substring(日期列,7,2)
------解决方案--------------------
数据存储格式应该在设计的时候就弄好,没有规则的存数据总有一天会让你奔溃的
------解决方案--------------------
引用:
追问下   如何统一格式为 YYYYMMDD     如 20131001   这种格式的呢? 


DECLARE @a TABLE
(
a NVARCHAR(50),
b NVARCHAR(50),
c char(8)
)

INSERT @a 
SELECT '2013-08-08 14:15:12','2013-10-22','20130101'

SELECT
CONVERT(VARCHAR(50),CAST(a AS DATETIME),112) a,
CONVERT(VARCHAR(50),CAST(b AS DATETIME),112) b,
CONVERT(VARCHAR(50),CAST(c AS DATETIME),112) c
FROM @a
-------------------------------
a b c
20130808 20131022 20130101


先转换,再更新
------解决方案--------------------
引用:
追问下   如何统一格式为 YYYYMMDD     如 20131001   这种格式的呢? 


create table tb(t1 datetime,t2 datetime,t3 char(20))

insert into tb
select '2013-08-08 14:15:12','2013-10-22','20130101' 


select convert(varchar(10),CAST(t1 as datetime),112),
       convert(varchar(10),CAST(t2 as datetime),112),
    &