SQL欄位的日期格式有些是 "20200127"
少部份格式被新程式改成是 "2021-01-27"
己經查到要用這方法
select CONVERT(varchar(12) , getdate(), 112 )
上面是把今天日期設定成"20210127"
要如何取出欄位 ci004 ci005 ci006 的日期
格式改過來,然後原日期存回去
例如
日期 "2000-01-01" 至 "2024-12-31"
改成 "20200101" ~ "20241321"
CREATE TABLE A (
ci004 varchar(40) NULL ,
ci005 varchar(40) NULL ,
ci006 varchar(40) NULL);
INSERT INTO A (ci004,ci005,ci006)
VALUES
('20200127','20200128','20200129'),
('2021-01-27','2021-01-28','2021-01-29'),
('2022-01-27','20220128','20230129');
UPDATE X
SET ci004=REPLACE(ci004,'-',''),
ci005=REPLACE(ci005,'-',''),
ci006=REPLACE(ci006,'-','')
FROM A AS X
WHERE ci004 LIKE '%-%' OR ci005 LIKE '%-%' OR ci006 LIKE '%-%'
declare @olddate varchar(10)
set @olddate='2021-01-27'
select replace(@olddate,'-','')
假設你的欄位格式都是字串。
第一招,直接格式更新法:
UPDATE db SET
ci004 = CONVERT(varchar(12) , ci004, 112 )
WHERE ci004 like '%-%'
第二招:消除法:
UPDATE db SET
ci004 = replace(ci004 , '-', '' )
第三招,時間辨識轉換法:
不過這招看有沒有人會寫。因為我sql的函式不熟,
需要將字串辨識後轉成unixtime後(如php的strtimtime函式)。再重新轉換日期格式。
只是這招比較常用在時區轉換用就是了。
恩~你參考看看吧
declare @Test table(
ci004 varchar(10)
,ci005 varchar(10)
,ci006 varchar(10)
)
insert into @Test
values('','2020-12-31','')
,('2000-12-1','','2000-12-31')
,('','2020-1-1','2020-12-31')
update @Test
set ci004 = (case when isDate(ci004) = 1 then CONVERT(varchar(12),Convert(date,ci004), 112 ) else ci004 end)
, ci005 = (case when isDate(ci005) = 1 then CONVERT(varchar(12),Convert(date,ci005), 112 ) else ci005 end)
, ci006 = (case when isDate(ci006) = 1 then CONVERT(varchar(12),Convert(date,ci006), 112 ) else ci006 end)
select *
from @Test
为了将日期格式从 "YYYY-MM-DD" bitlife 改回 "YYYYMMDD",并将格式化后的日期存回原来的字段中,可以使用 SQL Server 的内建函数来实现这个任务。