zoukankan      html  css  js  c++  java
  • 方法多种,选择随已定

    生产系统分早晚班问题,经约定,每天七点之前,所有生产记录,算前一天处理。因为系统记录产生的日期,是获取当前日期,需要改写一下,七点之前的取到的当天日期需要减去1天。解决方法可以多种,前台程序处理,或是可以数据库中处理。

    程序处理:

    GetGenerateDate
     string GetGenerateDate()
            {
                DateTime dateTime1 
    = DateTime.Now;
                DateTime dateTime2 
    = Convert.ToDateTime(dateTime1.ToString("yyyy-MM-dd"+ " " + "07:00:00");

                
    if (DateTime.Compare(dateTime1, dateTime2) < 0)
                {
                    dateTime1 
    = dateTime1.AddDays(-1);
                }

                
    return dateTime1.ToString("yyyy-MM-dd"); 
            }

    数据库端处理,和前台程序的函数基本上一样:

    udf_GetGenerateDate
     CREATE FUNCTION [dbo].[udf_GetGenerateDate]()
     
    RETURNS DATE
     
    AS
     
    BEGIN    
        
    DECLARE @d DATETIME = CURRENT_TIMESTAMP
        
    DECLARE @d2 DATETIME = CONVERT(DATETIME,CONVERT(NVARCHAR(20),CAST(@d AS DATE)) + ' ' + '07:00:00')
        
        
    --下面这个函数,可以参考链接:
        --http://www.cnblogs.com/insus/archive/2011/06/24/2089005.html
        IF ([dbo].[DateTimeCompare](@d,@d2< 0)
            
    SET @d = DATEADD(day,-1,@d)
        
        
    RETURN  CAST(@d AS TIME)
        
     
    END


    另外一种方法,也是在数据库中处理,也许要比上一个函数,简单得多,只是判断当前的时间是否是在0点到7点之间,如果是,日期减1天:

    udf_GetGenerateDate
     CREATE FUNCTION [dbo].[udf_GetGenerateDate]()
     
    RETURNS DATE
     
    AS
     
    BEGIN        
        
    DECLARE @TimeStamp TIME = '07:00:00'
        
    DECLARE @cDate DATETIME = CURRENT_TIMESTAMP
        
        
    IF (CAST(@cDate AS TIME) BETWEEN '00:00:00' AND @TimeStamp)        
            
    SET @cDate  = DATEADD(day,-1,@cDate)
        
    RETURN CAST(@cDate AS DATE)
        
     
    END
  • 相关阅读:
    Linq聚合操作之Aggregate,Count,Sum,Distinct源码分析
    Linq分区操作之Skip,SkipWhile,Take,TakeWhile源码分析
    Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析
    Linq基础操作之Select,Where,OrderBy,ThenBy源码分析
    PAT 1152 Google Recruitment
    PAT 1092 To Buy or Not to Buy
    PAT 1081 Rational Sum
    PAT 1084 Broken Keyboard
    PAT 1077 Kuchiguse
    PAT 1073 Scientific Notation
  • 原文地址:https://www.cnblogs.com/insus/p/2157941.html
Copyright © 2011-2022 走看看