-1

我输入了一些包含日期列的日期,日期格式不正确,现在如果我再次输入它们,将需要几个月的时间来修复,例如,如果我可以通过一些触发器来修复它的话。数据中输入的日期是 2012 年 5 月 9 日,但实际日期是 2012 年 9 月 5 日。任何想法????

我刚刚做了一个触发器,它安全吗?我希望它只影响一行,而不是全部,我在逻辑上是否正确?

  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'
4

1 回答 1

1

要在 SQL 中转换日期时间格式,请查看此链接

如果您的问题是您需要更新所有记录并将日期与月份切换

例如,接下来 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 
于 2013-06-02T09:51:58.400 回答