我输入了一个有日期列的日期,日期格式不正确,现在如果我再次输入它将需要几个月才能修复,任何想法是否可以通过某些触发器修复它,例如。在数据中输入的日期是5/9/2012,但实际日期是9/5/2012。任何的想法????
我刚刚做了一个触发器是否安全?我希望它只影响一行,而不是全部,我的逻辑是否正确?
GO
ALTER TRIGGER [dbo].[OnReceiptUpdate]
ON [dbo].[paymentReceipt]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
Declare @correctdate VARCHAR(19);
Declare @receiptNo VARCHAR(50);
DECLARE @customerID NCHAR(50)
SET @customerID= (SELECT customerID FROM inserted)
set @correctdate = (SELECT CONVERT(VARCHAR(19),paymentDate,103) FROM inserted)
set @receiptNo = (SELECT receiptNo FROM inserted)
BEGIN
UPDATE Paymentreceipt
SET paymentDate = @correctdate
WHERE customerID = @customerID and receiptNo=@receiptNo
END
END'
答案 0 :(得分:1)
要在SQL中转换日期时间格式,请检查this link
如果您遇到问题,则需要更新所有记录并使用月份切换日期
例如,接下来的2个查询的输出
select CONVERT(VARCHAR(19),GETDATE(),101)
select CONVERT(VARCHAR(19),GETDATE(),103)
将是
06/02/2013 02/06/2013
所以你的查询应该是这样的
Update MyTable
Set myDate = CONVERT(VARCHAR(19),GETDATE(),101)
当您不能\不想更改应用程序代码时触发器很好,因此您将自己在数据库中“修复”它。这不是一个好的做法,你应该在没有其他选项时使用它,因为这里的代码更改很简单
CREATE TRIGGER trg_UpdateTimeEntry
ON dbo.TimeEntry
AFTER UPDATE
AS
... place your code here