如何修改插入的数据
我正试图解决数据摄取问题。如何修改插入的数据
有收集一些数据,它吐出到我们的数据库的应用程序,但问题是它正在收集已被修改在客户端要像“DDD DDMMMYYYY”日期:
'Sat 20May2017'
该应用程序不是我们的,我们无法访问它的源代码。我想简单地从插入之前的日期中删除“DDD”部分,但是我一直无法成功完成此操作。
SOURCE_DATE DATE NOT NULL
AS是,插入件会失败:从字符串变换日期和/或时间时
转换失败
表列被定义。
但他们将与格式 'DDMMMYYYY'工作(我已经测试了这一点)。
我试图创建触发器来解决这个问题,但没有我曾尝试工作过。最近的一次尝试:
CREATE TRIGGER T_FORMAT_DATE
ON MY_TABLE
INSTEAD OF INSERT AS
BEGIN
SET NOCOUNT ON;
INSERT INTO MY_TABLE(SOURCE_DATE)
SELECT RIGHT(SOURCE_DATE, LEN(SOURCE_DATE) - 4)
FROM inserted;
END
边问题:有没有办法知道何时/如果触发器已执行?
任何帮助将不胜感激。
我做不觉得这是最好的答案,但这里是一个方式:
我创建了一个 “穿针引线” 表设置SOURCE_DATE场VARCHAR(13)。
然后,我触发或@Yogesh或@rahul触发器会工作得很好。问题是表约束触发的执行之前检查在插入和。
如果你想从你期望的日期字符串中删除一周的一天是星期六,星期日,星期一,等等。然后在下面简短的命令会帮助你。
DECLARE @DATE NVARCHAR(80);
SET @DATE = 'Sat 20May2017'
select LTRIM(REPLACE(@DATE, SUBSTRING(@DATE, 1, 3), '')) DATE
输出:
+===========+
| DATE |
+===========+
| 20May2017 |
+-----------+
它仍然返回一个字符串,将其转换成日期 – Wocugon
我已经给出了答案,因为每个“但是他们将与格式‘DDMMMYYYY’(我已经测试了这一点)的工作。” –
@Sobmac没有问题,字符串日期将插入我已经过测试的表中。 –
如果你想删除的一周每天都是星期六,星期日,星期一,等等。你可以使用try_parsefunction
DECLARE @DATE NVARCHAR(80);
SET @DATE = 'Sat 20May2017';
SELECT Replace(CONVERT(VARCHAR(11), TRY_PARSE(@DATE AS DATE), 106), ' ', '');
如果下面的答案有用,则接受或投票解决方案/答案。 –
我希望有人会以更好的答案作出回应。我觉得我只是一个解决方法,而不是一个真正的解决方案。 –