在数据库中有一个名为Tbl_GIT的表。数据从多个位置插入/更新。我得到的一些数据格式就像01/02/18 01:53:30 p. m.
和01/02/18 08:22:24 a. m.
暂时我希望如果数据以这种格式插入/更新,我可以在插入/更新后使用触发器来纠正这个问题。提交的GT9和GT10在表中是varchar(50)。那我怎么能这样做呢。
以下是我的示例数据
ID GT9 GT10
7686004401 12/8/17 4:33:36 PM 01/02/18 06:51:38 a. m.
6871761806 12/7/17 5:45:29 AM 01/02/18 12:03:33 p. m.
7694553943 12/21/17 7:22:59 AM 01/02/18 07:45:57 a. m.
7696265108 12/29/17 6:55:53 AM 01/02/18 12:38:24 PM
696265124 12/28/17 8:19:30 PM 01/02/18 08:56:21 AM
697024242 12/29/17 9:35:44 AM 01/02/18 05:25:28 AM
提前感谢您的帮助。
表DDL
CREATE TABLE [dbo].[Tbl_GIT] (
[ORDERID] INT NOT NULL,
[ID] INT IDENTITY (1, 1) NOT NULL,
[GT1] VARCHAR (255) NULL,
[GT2] VARCHAR (255) NULL,
[GT3] VARCHAR (255) NULL,
[GT4] VARCHAR (255) NULL,
[GT5] VARCHAR (255) NULL,
[GT6] VARCHAR (255) NULL,
[GT7] VARCHAR (255) NULL,
[GT8] VARCHAR (255) NULL,
[GT9] VARCHAR (255) NULL,
[GT10] VARCHAR (255) NULL,
[GPSLONG] VARCHAR (20) NULL,
[GPSLAT] VARCHAR (20) NULL
);
答案 0 :(得分:1)
下面的示例代码应将varchar字段GT10更新为所需的格式。
create table Tbl_GIT
(
ID int identity,
GT9 varchar(50),
GT10 varchar(50)
)
GO
insert into Tbl_GIT values ('12/8/17 4:33:36 PM','01/02/18 06:51:38 a. m.'),('12/29/17 6:55:53 AM','01/02/18 12:38:24 PM')
select * from Tbl_GIT
GO
create trigger tr_tmp_Insert on Tbl_GIT after insert
as
begin
IF EXISTS(SELECT 1 FROM inserted WHERE GT10 LIKE '%p. m.' OR GT10 LIKE '%p.m.' OR GT10 LIKE '%a. m.' OR GT10 LIKE '%a.m.')
BEGIN
UPDATE Tbl_GIT SET GT10 = REPLACE(REPLACE(REPLACE(REPLACE(GT10,'p.m.','PM'),'p. m.','PM'),'a.m.','AM'),'a. m.','AM')
END
end
GO
insert into Tbl_GIT values ('12/8/17 4:33:36 PM','01/05/18 06:51:38 p. m.')
insert into Tbl_GIT values ('12/29/17 6:55:53 AM','01/12/18 12:38:24 a. m.')
insert into Tbl_GIT values ('12/29/17 6:55:53 AM','01/01/18 12:38:24 a.m.')
insert into Tbl_GIT values ('12/29/17 6:55:53 AM','01/03/18 12:38:24 p.m.')
select * from Tbl_GIT