【问题标题】:Insert value into column using function and mathematical calculation使用函数和数学计算将值插入列
【发布时间】:2013-07-29 16:41:33
【问题描述】:
table IssuedBooks
{
column RollNo,BookNo,BookName,AuthorName,IssueDate,Fine
}

我想创建一个函数,在调用时填充或给出计算出的罚款。
假设在 IssueDate 15 天后每天罚款 5 次。可能我可以将 IssueDate 作为参数发送给函数,然后使用 DATEDIFF(DAY,IssueDate,CAST(GETDATE() as date)) 计算 IssueDate 和 Current date 之间的差异,然后使用返回的天数来检查是否它们大于 15 并相应地计算罚款并通过函数返回。
我对如何实现它、查询将是什么等感到非常困惑。请帮忙。
非常感谢您提前..

【问题讨论】:

    标签: sql function insert calculated-columns


    【解决方案1】:
    SELECT
    RollNo, BookNo, BookName, AuthorName, IssueDate,
    CASE
    WHEN DATEDIFF(Day,IssueDate,cast(getdate() as date)) > 15
    THEN (DATEDIFF(Day,IssueDate,cast(getdate() as date)) - 15) * 5
    ELSE '0'
    END as Fine
    From IssuedBooks
    

    或者只是:

    UPDATE IssuedBooks
    SET Fine = (DATEDIFF(Day,IssueDate,cast(getdate() as date)) - 15) * 5
    WHERE DATEDIFF(Day,IssueDate,cast(getdate() as date)) > 15
    

    【讨论】:

    • 如何通过函数实现?我想通过函数来​​做到这一点,这样我只需要调用函数来更新列,而不是一次又一次地编写查询..
    • 您使用的是什么 DBMS?
    • Microsoft SQL Server 2008
    • 简单。研究创建一个在您的表上运行该更新的存储过程,或者您想要的任何东西。您只需编写exec ProcedureName 或更好的选项即可运行更新,创建一个每天、每周等自动运行存储过程的作业。
    • This 可能有助于创建工作
    猜你喜欢
    • 1970-01-01
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多