نمایش نتایج 1 تا 9 از 9

نام تاپیک: زمان سپری شده از ارسال پست

  1. #1
    کاربر دائمی آواتار b.paseban
    تاریخ عضویت
    آبان 1388
    محل زندگی
    گم شده وسط سورس ها
    سن
    35
    پست
    590

    زمان سپری شده از ارسال پست

    سلام دوستان.
    من میخوام زمان سپری شده از ارسال پست کاربر رو نمایش بدم.
    زمان درج رو دارم و زمان حال هم دارم.
    فقط نمیدونم واسه دستور SELECT چطوری این دومقدار رو از هم کم کنم و مقدار رو بصورت انلاین نمایش بدم.
    آیا این مقدار توی دیتا بیس دوباره درج میشه یا نه؟چون مرتب این زمان تغییر می کنه.
    یا راه حل مناسب دیگه ای هم وجود داره.
    برای اینکه منظور خودم رو بهتر رسونده باشم میتونید به سایت asp.net مراجعه کنید که توی قسمت فروم اونجا همین سیستم وجود داره.
    با تشکر از همه دوستان برنامه نویس.

  2. #2

    نقل قول: زمان سپری شده از ارسال پست

    با دستور DATEDIFF ميتونيد اختلاف زمان ثبت با زمان جاري رو بدست بياريد.
    SELECT DATEDIFF(Minute, DateField, GetDate()) AS Minutes From TableName
    در دستور بالااختلاف بر حسب دقيقه محاسبه ميشه.

  3. #3
    کاربر دائمی آواتار b.paseban
    تاریخ عضویت
    آبان 1388
    محل زندگی
    گم شده وسط سورس ها
    سن
    35
    پست
    590

    نقل قول: زمان سپری شده از ارسال پست

    با تشکر از شما دوست عزیز.
    من از این کد برای بدست آوردن اختلاف زمان استفاده میکنم:

    DateTime start = new DateTime(2009, 6, 14, 16, 34, 25);
    DateTime end =DateTime.Now;
    TimeSpan difference = end - start;

    TimeSpan difference = end - start; //create TimeSpan object
    Console.WriteLine("Difference in days: " + difference.Days);

    با استفاده از این کد من میتونم از ثانیه و دقیقه و ... اطلاع پیدا کنم .
    چطوری من باید زمان ثبت پست رو بیرون بکشم و توی اون قسمت start قرار بدم و بعدش نمایش بدم.
    تشکر.

  4. #4
    کاربر دائمی آواتار b.paseban
    تاریخ عضویت
    آبان 1388
    محل زندگی
    گم شده وسط سورس ها
    سن
    35
    پست
    590

    نقل قول: زمان سپری شده از ارسال پست

    توی کد شما چطوری باید فیلدهای دیگر دیتا بیس رو select کرد؟
    توی دستور شما فقط 3 تا رگومان قبول میکنه.

  5. #5
    کاربر دائمی آواتار b.paseban
    تاریخ عضویت
    آبان 1388
    محل زندگی
    گم شده وسط سورس ها
    سن
    35
    پست
    590

    نقل قول: زمان سپری شده از ارسال پست

    آرگومانهای مورد استفاده در کد اول:
    http://msdn.microsoft.com/en-us/library/ms189794.aspx

    کد select رو پیدا کردم.حالا اگه بخوام یه دستور شرطی واسه این کد بزارم چطوری باید اینکار رو انجام بدم.
    مثلا اگه نتیجه DATEDIFF بزرگتر از 60 بود جوابو به دقیقه بگه . مثلا اگه 76 ثانیه از زمان بین ارسال تا الان سپری شده باشه مقدار 1دقیقه و 16 ثانیه رو برگردونه.

    بازم تشکر از دوستان.

  6. #6
    کاربر دائمی آواتار b.paseban
    تاریخ عضویت
    آبان 1388
    محل زندگی
    گم شده وسط سورس ها
    سن
    35
    پست
    590

    نقل قول: زمان سپری شده از ارسال پست

    کجای این دستور مشکل داره؟
    من میخوام مقدار DATEDIFF رو بدست بیارم و بعدش واسش یه شرط بزارم.
    ولی گویا شرط اجرا نمیشه.

    @DATEDIFF INT=0
    as
    SELECT DATEDIFF(Minute, date, GETDATE()) AS Minutes From tblajax
    If @DATEDIFF > 60
    BEGIN
    SELECT Id, name, family, age,
    (SELECT DATEDIFF(Minute, date, GETDATE()) AS Minutes)
    AS Id FROM tblajax
    END
    ELSE
    BEGIN
    SELECT Id, name, family, age,
    (SELECT DATEDIFF(Second, date, GETDATE()) AS Minutes)
    AS Id FROM tblajax
    END

  7. #7

    نقل قول: زمان سپری شده از ارسال پست

    برای اینکه به ازا هر رکورد این تفاضل محاسبه بشه بهتر اینه که ابتدا تابعی بصورت زیر بنویسید
    CREATE FUNCTION GetDiff
    (
    @dt DateTime,
    @Now datetime
    )
    RETURNS varchar(max)
    AS
    BEGIN
    Declare @Str varchar(max),
    @Temp datetime,
    @Year int,
    @Month int,
    @Day int,
    @Hour int,
    @Minute int,
    @Second int
    Set @Str = ''
    Set @Year = DATEDIFF(Year, @dt, @Now) - 1
    Set @Temp = DateAdd(Year, @Year, @dt)
    Set @Month = DATEDIFF(Month, @Temp, @Now) - 1
    Set @Temp = DateAdd(Month, @Month, @Temp)
    Set @Day = DATEDIFF(Day, @Temp, @Now) - 1
    Set @Temp = DateAdd(Day, @Day, @Temp)

    Set @Hour = DATEDIFF(Hour, @Temp, @Now)
    Set @Temp = DateAdd(Hour, @Hour, @Temp)
    Set @Minute = DATEDIFF(Minute, @Temp, @Now)
    Set @Temp = DateAdd(Minute, @Minute, @Temp)
    Set @Second = DATEDIFF(Second, @Temp, @Now)
    Set @Temp = DateAdd(Second, @Second, @Temp)
    if(@Second > 59)
    Begin
    Set @Minute = @Minute + 1
    Set @Second = @Second % 60
    End
    if(@Minute > 59)
    Begin
    Set @Hour = @Hour + 1
    Set @Minute = @Minute % 60
    End
    if(@Hour > 23)
    Begin
    Set @Day = @Day + 1
    Set @Hour = @Hour % 24
    End
    if(@Month IN (0,2,4,6,7,9,11) AND (@Day > 30))
    Begin
    Set @Month = @Month + 1
    Set @Day = @Day % 31
    End
    else if(@Month IN (3,5,8,10) AND (@Day > 29))
    Begin
    Set @Month = @Month + 1
    Set @Day = @Day % 30
    End
    else if (@Month = 1 AND @Day > 27)
    Begin
    Set @Month = @Month + 1
    Set @Day = @Day % 28
    End
    if(@Month > 11)
    Begin
    Set @Year = @Year + 1
    Set @Month = @Month % 12
    End
    Set @Str = @Str + Case When @Year > 0
    Then Cast(@Year as varchar) + ' Year ' Else '' End
    Set @Str = @Str + Case When @Month > 0 OR @Str <> ''
    Then Cast(@Month as varchar) + ' Month ' Else '' End
    Set @Str = @Str + Case When @Day > 0 OR @Str <> ''
    Then Cast(@Day as varchar) + ' Day ' Else '' End
    Set @Str = @Str + Case When @Hour > 0 OR @Str <> ''
    Then Cast(@Hour as varchar) + ' Hour ' Else '' End
    Set @Str = @Str + Case When @Minute > 0 OR @Str <> ''
    Then Cast(@Minute as varchar) + ' Minute ' Else '' End
    Set @Str = @Str + Case When @Second > 0 OR @Str <> ''
    Then Cast(@Second as varchar) + ' Second ' Else '' End

    Return @Str
    END
    بعد توی دستور Select بصورت زیر عمل کنید
    Select dbo.GetDiff(date, GetDate()) as DateDiff From tblajax

  8. #8
    کاربر دائمی آواتار b.paseban
    تاریخ عضویت
    آبان 1388
    محل زندگی
    گم شده وسط سورس ها
    سن
    35
    پست
    590

    نقل قول: زمان سپری شده از ارسال پست

    با تشکر از شما دوست عزیز.
    من با توابع sql آشنایی ندارم.میشه بگین من توی vs توی قسمت اضافه کردن یک تابع درون بانک از کدام گزینه باید استفاده کنم.
    منظورم اینه که از inline function یا Table valued یا Scalar ؟
    اگر امکانش هست یک مقدار در مورد کد خودتون توضیح بدین ممنون میشم.

  9. #9

    نقل قول: زمان سپری شده از ارسال پست

    توی vs توی قسمت اضافه کردن یک تابع درون بانک از کدام گزینه باید استفاده کنم.
    منظورم اینه که از inline function یا Table valued یا Scalar ؟
    تقريبا همشون معلومه چه نوع هستند
    Scalar براي توابعي كه يك مقدار برميگردونه
    Table valued براي خروجيهايي كه بصورت يك جدول باشه (فرضا يك Select) براي اطلاعات بيشتر ميتونيد به Book Online مراجعه كنيد توي اونجا هم كامل توضيح داده هم مثالهاي متنوعي داره.
    اگر امکانش هست یک مقدار در مورد کد خودتون توضیح بدین ممنون میشم.
    كار خاصي نميكنه ابتدا اختلاف سال رو بدست مياره بعد به اندازه همين اختلاف به تاريخ سورس اضافه ميكنه ، براي ماه ، روز ، ساعت ، دقيقه و ثانيه هم اين 2 كار رو به ترتيب انجام ميده.
    مقدار روز در مرحله قبل بين 0 تا 60 ميشه براي همين چك ميكنه اگر توي هركدوم از ماههاي 31 روزه بوديم و مقدار روز بيشتر از 30 بود يك واحد به ماه اضافه كنه و مقدار روز رو برابر با باقيمانده بر 31 كنه (براي ماههاي 30 و 28 روزه هم همين كار رو ميكنه). براي ماه هم همين روال تكرار ميشه و در نهايت بصورت يك رشته به هم متصل ميشه و به خروجي ارسال ميشه.
    شايد حجم كد يه ذره زياد به نظر بياد ولي هم منطق و هم دستوراتش ساده اند.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •