PDA

View Full Version : دستور SQL برای گزارش بر اساس تاریخ و ساعت



h_assefi
شنبه 15 تیر 1392, 11:28 صبح
سلام به همه دوستان
من میخوام یک گزارشی طراحی کنم که هم بر اساس تاریخ و هم بر اساس ساعت داده ها را فیلتر کنه
اما مشکلی که دارم اینه که ساعتی که وارد میشه را نمیدونم چطوری توی دستورات SQL استفاده کنم
مثلا گزارشی که میخوام به این شکل هستش که بازه ساعتش از ساعت 12 شب میگذره
مثال:
انتخاب اسامی که در بین ساعت 5 بعد از ظهر تا ساعت 2 صبح روز بعد

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

amir200h
شنبه 15 تیر 1392, 12:11 عصر
اگه ستونت از نوع nvarchar باشه کوئری زیر جواب میده

SELECT * FROM name_jadvalet Where Sotone_timet Between 'time1' and 'time2'

h_assefi
شنبه 15 تیر 1392, 13:54 عصر
اگه ستونت از نوع nvarchar باشه کوئری زیر جواب میده

SELECT * FROM name_jadvalet Where Sotone_timet Between 'time1' and 'time2'

این موردی را که گفتید را انجام دادم اما همین مورد هم اشکال داره و اونم اینه که اگه از ساعت 8 شب (20:00) تا ساعت 2 صبح (02:00) را بخوای گزارش بگیری هیچ مقداری بهت بر نمیگردونه با اینکه میدونی که مقداری هم داری

sahra76
شنبه 15 تیر 1392, 14:10 عصر
اگه شما کوریتونو اینجور مینویسین:

select * from name_jadvalet where Sotone_timet between '20:00' and '02:00'
قطعا جواب نمیگیری چون بین 20 تا 2 هیچ عددی نیست. تو باید کوری رو به دوقسمت کنی. یکیش شرطش باشه ساعت '20:00' تا '12:00' و تاریخ=تاریخ روز موزد نظرت و قسمت بعدیش که با and از هم جداش میکنی، باشه ساعت '12:00' تا '02:00' و تاریخ=تاریخ روز بعد. یعنی هروقت انتهای بازه ساعتت از ساعت نصفه شب بگذره فیلد تاریخو هم دخالت بدی.

CsharpNevisi
شنبه 15 تیر 1392, 14:10 عصر
سلام .. مینونی از تاریخم استفاده کنی .... !!! هم ساعت باشه هم تاریخ

amir200h
شنبه 15 تیر 1392, 14:29 عصر
اگه شما کوریتونو اینجور مینویسین:

select * from name_jadvalet where Sotone_timet between '20:00' and '02:00'
قطعا جواب نمیگیری چون بین 20 تا 2 هیچ عددی نیست. تو باید کوری رو به دوقسمت کنی. یکیش شرطش باشه ساعت '20:00' تا '12:00' و تاریخ=تاریخ روز موزد نظرت و قسمت بعدیش که با and از هم جداش میکنی، باشه ساعت '12:00' تا '02:00' و تاریخ=تاریخ روز بعد. یعنی هروقت انتهای بازه ساعتت از ساعت نصفه شب بگذره فیلد تاریخو هم دخالت بدی.

بین 12 تا 2 هم عددی نیست باید بین 00:00 تا 02:00 باشه

sahra76
شنبه 15 تیر 1392, 14:33 عصر
بله دوست عزیز. حواسم نبود به جا12، باید 00 گذاشت.

h_assefi
شنبه 15 تیر 1392, 15:43 عصر
اگه شما کوریتونو اینجور مینویسین:

select * from name_jadvalet where Sotone_timet between '20:00' and '02:00'
قطعا جواب نمیگیری چون بین 20 تا 2 هیچ عددی نیست. تو باید کوری رو به دوقسمت کنی. یکیش شرطش باشه ساعت '20:00' تا '12:00' و تاریخ=تاریخ روز موزد نظرت و قسمت بعدیش که با and از هم جداش میکنی، باشه ساعت '12:00' تا '02:00' و تاریخ=تاریخ روز بعد. یعنی هروقت انتهای بازه ساعتت از ساعت نصفه شب بگذره فیلد تاریخو هم دخالت بدی.


سلام دوست عزیز
ممنون از اینکه این موضوع را پیگیری کردی. من از همین راه استفاده کردم و به نتیجه هم رسیدم.
انشاءا... موفق باشی اگه کمکی هم میخواستی من در خدمتم