PDA

View Full Version : فیلتر کردن تاریخ شمسی



پرستو پارسایی
پنج شنبه 14 آذر 1398, 02:04 صبح
با سلام من تو دیتابیسم تاریخ رو به صورت ( 12 شهریور 1394 ) ثبت میکنم. آیا راهی هست بشه هنگام لود کردن در دیتا گرید ،فقط تاریخ های بعد از تاریخی رو که نوشتم نمایش داده بشن . دیتابیس SQL
ممنون میشم در صورت اطلاع پاسخ دهید.

mmbguide
پنج شنبه 14 آذر 1398, 12:30 عصر
سلام

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

پرستو پارسایی
پنج شنبه 14 آذر 1398, 13:23 عصر
ممنونم همینکار رو میکنم . اگر تاریخ رو استاندارد وارد کنم (1395/08/05) مثل این ، چه جوری تاریخ های قبل یا بعدش رو فیلتر کنم ممنونم میشم راهنمایی کنید

the king
پنج شنبه 14 آذر 1398, 13:39 عصر
ممنونم همینکار رو میکنم . اگر تاریخ رو استاندارد وارد کنم (1395/08/05) مثل این ، چه جوری تاریخ های قبل یا بعدش رو فیلتر کنم ممنونم میشم راهنمایی کنید

اونوقت چون طول رشته تاریخ همیشه 10 کاراکتر ئه، حتی مقایسه رشته ای تاریخ با تاریخ هم نتیجه درستی میده و نیازی به تبدیل رشته به DateTime نیست.
مثلا SELECT با شرط های 'WHERE [fieldname] >= '1395/08/05 یا 'WHERE [fieldname] BETWEEN '1395/08/01' AND '1395/08/30 رو می توانید بکار ببرید.

پرستو پارسایی
پنج شنبه 14 آذر 1398, 14:02 عصر
ممنونم از پاسخ شما ولی درست متوجه نشدم چرا همیشه طول رشته تاریخ فرض به 10 کاراکتره .
نوع بکار گیری کد شما رو هم نفهمیدم و مشکل از منه ممکنه کمی بیشتر توضیح بدید سپاس

the king
پنج شنبه 14 آذر 1398, 14:53 عصر
ممنونم از پاسخ شما ولی درست متوجه نشدم چرا همیشه طول رشته تاریخ فرض به 10 کاراکتره .
نوع بکار گیری کد شما رو هم نفهمیدم و مشکل از منه ممکنه کمی بیشتر توضیح بدید سپاس
4 کاراکتر سال + 1 کاراکتر / + 2 کاراکتر ماه + 1 کاراکتر / + 2 کاراکتر روز = 10 کاراکتر

منظورم چیزی شبیه به اینه :


Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim table As New DataTable
Using connection As New SqlConnection(connectionString)
connection.Open()
Using command As New SqlCommand("SELECT * FROM [YourTable] WHERE [YourField] >= @mindate", connection)
command.Parameters.AddWithValue("@mindate", "1395/08/01")
Using adapter As New SqlDataAdapter(command)
adapter.Fill(table)
End Using
End Using
End Using
DataGridView1.DataSource = table
End Sub

پرستو پارسایی
پنج شنبه 14 آذر 1398, 19:00 عصر
ممنونم از پاسخ کامل و آموزنده شما (عالی) سپاسگزارم

کد لود من کمی متفاوته تاریخ رو نتونستم لود کنم

Dim DB As New DataAccess
Dim Table As New DataTable
DB.ConOpen()
DB.SqlCmd.Parameters.AddWithValue("@Record", record)
DB.ExecReader("SELECT FullName As [نام], Tarikh As [تـاریخ ], ID As [ID] From TBL_Design WHERE Record = @Record " + str)
Table.Load(DB.SqlDR)
DataGridView1.DataSource = Table
DB.ConClose()

با این کد رکورد رو فیلتر کردم
چون برام مهمه و باید اینطور باشه ولی تاریخ های مورد نظرم رو هم برای این رکورد میخوام یعنی الویت لودم برای رکورد هست با تاریخ های خاص مثلا از یک تاریخ به بعد
لازم به توضیخ اینکه رکوردم رو از یک تیبل دیگه میگیرم

hamidrezax1
پنج شنبه 14 آذر 1398, 20:32 عصر
سلام.دوست گرامی بعضی وقت ها برای اینکه پرفومنس (کارایی)یک سیستم بالا بره بهتره که کد ها در نرم افزار تعریف بشن تا توی دیتابیس
مثلا بهتره که شما تاریخ رو به صورت صحیح در دیتابیس ذخیره کنید و در واکشی اطلاعات اونجوری که میخواین به کاربر نمایش بدین
همین الان هم دیر نشده.با یک دستور Update و Replace میتونید دیتابیستون رو تصیح کنید و زمان فراخوانی اطلاعات مجددا با یک حلقه اطلاعات رو به دلخواه به کاربر نمایش بدین.

پرستو پارسایی
شنبه 16 آذر 1398, 14:45 عصر
ممنونم از همه دوستان با راهنمایی شما ، مشکلم با اضافه کردن تاریخ صحیح رفع شد