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

نام تاپیک: وارد کردن اطلاعات به صورت تاریخ به SQL

  1. #1
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    وارد کردن اطلاعات به صورت تاریخ به SQL

    سلام دوستان
    من یک
    DateTimePicker
    فارسی در برنامه ام دارم که وقتی تاریخ را به صورت شمسی در SQL ذخیره می کنم اعمال نمی شه یعنی یک پیام خطا ظاهر می شه مبنی بر اینکه محدوده زمانی این تاریخ صحیح نیست.
    من یک کاری کردم تاریخ سال شمسی را بعلاوه 600 سال کردم در بانکم ذخیره کردم .
    حالا برای گزارش گیری می خوام تاریخ منهای 600 سال نشون داده بشه. اگه کسی دستور SQL برای کم کردن از تاریخ بلد هست لطفا راهنمایی کنه ممنون می شم.
    البته من DateTimePicker را از همین سایت دانلود کردم یادم نیست کی این برنامه رو گذاشته وگرنه از خودش می پرسیدم. اسم این کنترل PersianDatetimePicker_Usc هست.

  2. #2
    مدیر بخش آواتار salehbagheri
    تاریخ عضویت
    خرداد 1386
    محل زندگی
    In Hearts
    سن
    34
    پست
    2,225

    نقل قول: وارد کردن اطلاعات به صورت تاریخ به SQL

    وقتی تاریخ را به صورت شمسی در SQL ذخیره می کنم اعمال نمی شه یعنی یک پیام خطا ظاهر می شه مبنی بر اینکه محدوده زمانی این تاریخ صحیح نیست.
    دوست عزيز! نوع يا Type مربوط به سلول اين قسمت رو از Datetime به nvarchar تغيير دهيد!
    چون وقتي از تاريخ ميلادي استفاده نميكنيد دليلي نداره كه از اين نوع داده براي سلول جدولتون استفاده كنيد!

    با اين كار ديگه نيازي نيست كه با 600 جمع كنيد و ...!

    فقط تنها مشكلش اينكه به راحتي نميتونيد تغييري در تاريخ ايجاد كنيد!
    امیدم به دستان زیبای اوست . آنکه می آید . همان که نامش منجی ست ....

    به راستی اگر غرق نبودیم چرا مارا به منجی ای نیازمند کرده اند؟ ... دنیا دریاست ....

    دلنوشته های من


  3. #3
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: وارد کردن اطلاعات به صورت تاریخ به SQL

    نقل قول نوشته شده توسط salehbagheri مشاهده تاپیک
    دوست عزيز! نوع يا Type مربوط به سلول اين قسمت رو از Datetime به nvarchar تغيير دهيد!
    چون وقتي از تاريخ ميلادي استفاده نميكنيد دليلي نداره كه از اين نوع داده براي سلول جدولتون استفاده كنيد!

    با اين كار ديگه نيازي نيست كه با 600 جمع كنيد و ...!

    فقط تنها مشكلش اينكه به راحتي نميتونيد تغييري در تاريخ ايجاد كنيد!
    دوست عزیز از راهنمای شما ممنون ولی تمام مشکل من هم از اینه که اگه من با nvarchar ذخیره کنم نمی تونم براساس تاریخ ردیف کنم و یا از یک فاصله زمانی select کنم . لطفا بگید چطور می تونم از سال در SQL کم یا اضافه کنم. در ضمن نوع فیلد من در SQL از نوع datetime هست.

  4. #4
    کاربر دائمی آواتار ali_md110
    تاریخ عضویت
    فروردین 1385
    محل زندگی
    شیراز
    پست
    1,181

    نقل قول: وارد کردن اطلاعات به صورت تاریخ به SQL

    سلام دوست
    به نظز من شما فیلد تاریخ بانکتون رو از همون نوع DateTime بسازید هنگام درج تاریخ توسط برنامه کاربردی تاریخ شمسی رو به تاریخ میلادی تبدیل کنید تا تاریخ میلادی در بانک زخیره بشه و هروقت خواستید به کاربر تاربخ رو نمایش بدید تاریخ میلادی که در بانک ذخیره شده به تاریخ شمسی تبدیل و نمایش بدید کلاس PersianCalendar این تبدیلها رو به راحتی انجام میده

  5. #5
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: وارد کردن اطلاعات به صورت تاریخ به SQL

    سلام دوست عزيز

    من هم با نظر دوستمون salehbagheri موافقم كه شما تاريخ را به صورت NVarVhar ذخيره كنيد.

    ببينيد من خودم هم از همين روش استفاده مي كنم و هيچ مشكلي هم حتي براي رديف كردن بر اساس تاريخ نداشته ام.
    من تاريخ را يدون / ذخيره مي كنم با طول 8 بدين صورت 13870512 .
    بنابراين توجه كنيد كه شما فقط يك عدد خواهيد داشت كه ميتوانيد بر اساس آن هرنوع دستيابي را به راحتي داشته باشيد. وقتي هم مي خواهم تاريخ را نشان دهم مميزها را به آن اضافه مي كنم. ببينيد براي تاريخ فارسي شايد اين راحتترين راه حل باشد. هر چند راه حل هاي ديگري هم هست.

  6. #6
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: وارد کردن اطلاعات به صورت تاریخ به SQL

    نقل قول نوشته شده توسط anooshiran مشاهده تاپیک
    سلام دوست عزيز

    من هم با نظر دوستمون salehbagheri موافقم كه شما تاريخ را به صورت NVarVhar ذخيره كنيد.

    ببينيد من خودم هم از همين روش استفاده مي كنم و هيچ مشكلي هم حتي براي رديف كردن بر اساس تاريخ نداشته ام.
    من تاريخ را يدون / ذخيره مي كنم با طول 8 بدين صورت 13870512 .
    بنابراين توجه كنيد كه شما فقط يك عدد خواهيد داشت كه ميتوانيد بر اساس آن هرنوع دستيابي را به راحتي داشته باشيد. وقتي هم مي خواهم تاريخ را نشان دهم مميزها را به آن اضافه مي كنم. ببينيد براي تاريخ فارسي شايد اين راحتترين راه حل باشد. هر چند راه حل هاي ديگري هم هست.
    سلام مجدد
    روشی که شما (anooshiran ) می گید با روش دوست قبلی مون اندکی فرق می کنه که البته همون اندک مشکل منو حل می کنه . درسته اگه ما / رو برداریم می تونیم اونا رو مرتب کنیم.
    خوب حالا ما چطور دستور select بنویسیم که این / رو دوباره بزاره البته من با کد نویسی این کارو کردم ولی برای من درسر زیادی داشت اگه بخوایم فقط با select این کارو انجام بدیم باید چیکار کرد.
    در ضمن برای این که تاریخ میلادی رو به شمسی تبدیل کنیم راهشو می دونم اما برعکس نمی دونم لطفا توضیح بدید . در ضمن ایا می شه در دستورات sql کار رو راهت تر انجام داد.

    ممنون از توجه ای که دارید.

  7. #7
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: وارد کردن اطلاعات به صورت تاریخ به SQL

    سلام دوست عزيز

    كامپوننتي كه براي تبديلات در سايت گذاشتم امكان تبديل شمسي به ميلادي رو هم به شما ميده.
    به هر حال من كد تبديل شمسي به ميلادي رو يرات ميذارم



    PublicSharedFunction PersianToGregorian(ByVal [Date] AsString) AsString
    Dim pDate AsNew PersianCalendar
    Dim spl = Split([Date], "/")
    If spl(0).ToString.Length < 4 Then
    If spl(0).ToString.Length = 3 Then
    spl(0) = "1" & spl(0)
    EndIf
    If spl(0).ToString.Length = 2 Then
    spl(0) = "13" & spl(0)
    EndIf
    EndIf
    Dim year AsInteger = CInt(spl(0))
    Dim month AsInteger = CInt(spl(1))
    Dim day AsInteger = CInt(spl(2))

    Return Mid(pDate.ToDateTime(year, month, day, 0, 0, 0, 0, PersianCalendar.PersianEra), 1, 10)
    EndFunction



    در مورد select هم لطف كن كد كارتو بزار ببينم

  8. #8
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: وارد کردن اطلاعات به صورت تاریخ به SQL

    ممنون از توجه شما
    من یک select می خوام از بانکم داشته باشم. به نحوی که علامت / رو برای تاریخی که به صورت عدد وارد کردم دوباره بزاره. بدون اینکه مجبور باشم یکی یکی این کارو بکونم.
    و یا به جای عدد تاریخ میلادی وارد کنم و سپس هنگام select کردن از بانک دوباره اونو تبدیل به تاریخ شمسی کنم.
    در ضمن من فکر می کنم نامی که برای تاریخ ایران به کار می بریم درست نباشه تاریخ میلادی هم شمسی هست منتها میلادی شمسی و ما هجری شمسی ولی خوب اینطوری جا افتاده محض اطلاع !!

  9. #9
    کاربر دائمی آواتار anooshiran
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    تهران anoosh_resha@yahoo.com
    پست
    576

    نقل قول: وارد کردن اطلاعات به صورت تاریخ به SQL

    سلام دوست عزيز

    با اين كد ميتوني / را به تاريخت در select اضافه كني . فقط توجه كن كه مجبوري حتما اسم جديدي براي اين فيلد بگذلري كه من از NewDate استفاده كرده ام. اين متد Alias Name نام دارد.


    "SELECT SubString(_Date,1,4) + '/' + SubString(_Date,5,2) + '/' + SubString(_Date,7,2) AS NewDate FROM " & dataBaseName & TableName


    در ضمن ميلادي يا هجري مبدا تاريخ هستند . خورشيدي يعني يك دور گردش كامل زمين به دور خورشيد. به همين دليل است كه ما هيچ وقت زمان ثابت تحويل سال نداريم. ولي در ناريخ ميلادي زمان تحويا سال قراردادي است . بنابر اين به تعريف دقيق نمي توان به آن شمسي گفت زيرا زمان تحويل سال گردش يا كامل انجام نشده يا فراتر رفته.

    باز هم اكر در مورد كد مشكل داشتي در خدمت هستم.

  10. #10
    کاربر دائمی
    تاریخ عضویت
    شهریور 1387
    سن
    44
    پست
    634

    نقل قول: وارد کردن اطلاعات به صورت تاریخ به SQL

    نقل قول نوشته شده توسط anooshiran مشاهده تاپیک
    سلام دوست عزيز

    با اين كد ميتوني / را به تاريخت در select اضافه كني . فقط توجه كن كه مجبوري حتما اسم جديدي براي اين فيلد بگذلري كه من از NewDate استفاده كرده ام. اين متد Alias Name نام دارد.


    "SELECT SubString(_Date,1,4) + '/' + SubString(_Date,5,2) + '/' + SubString(_Date,7,2) AS NewDate FROM " & dataBaseName & TableName


    در ضمن ميلادي يا هجري مبدا تاريخ هستند . خورشيدي يعني يك دور گردش كامل زمين به دور خورشيد. به همين دليل است كه ما هيچ وقت زمان ثابت تحويل سال نداريم. ولي در ناريخ ميلادي زمان تحويا سال قراردادي است . بنابر اين به تعريف دقيق نمي توان به آن شمسي گفت زيرا زمان تحويل سال گردش يا كامل انجام نشده يا فراتر رفته.

    باز هم اكر در مورد كد مشكل داشتي در خدمت هستم.
    جناب anooshiran واقعا دست درد نکنه خیلی خوب بود. از این کامل تر نمی شد.
    در ضمن تاریخ میلادی هم برای اساس گردش زمین دور خورشد هست هر چند با چند ساعت اختلاف. به هر حال ممنون از توجه و مساعدتی که فرمودید.

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

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