SQL日期更正,通过触发器或程序

时间:2013-06-02 09:36:17

标签: sql sql-server triggers

我输入了一个有日期列的日期,日期格式不正确,现在如果我再次输入它将需要几个月才能修复,任何想法是否可以通过某些触发器修复它,例如。在数据中输入的日期是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'

1 个答案:

答案 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