دوست من،
این قطعه کدی که قرار دادین مشکلات فراوانی دارد که هر کدام را مورد بررسی قرار خواهم داد.
1. زمانی که چند متغیر را می خواهین تعریف کنید نیازی نیست که هر کدام را به طور جداگانه با دستور DECLARE تعریف کنید. کافیه یک DECLARE بنویسید و با کاراکتر کاما هر تعداد متغیری که می خواهین را تعریف کنید.
یعنی اون قسمت کد شما که مربوط به این موضوع هست به این شکل در خواهد آمد:
Declare @Start_T datetime,
@End_T datetime,
@Current_Time datetime;
2. بایستی مقدار ساعتی را که به متغیر های شروع و پایان انتساب می دهین را داخل یک جفت تک کوتیشن قرار بدین یعنی :
Set @Start_T = '01:00 AM'
Set @end_T = '03:00 PM'
3. Select باید از این عبارت حذف شود:
Set @Current_Time = Select Right(GetDate(),7)
4. این را می دانید که AM قبل از ظهر و PM برای بعد از ظهر در نظر گرفته میشود. ولی در این مورد من علاقه دارم که از 24-hour clock
استفاده کنم.
بوسیله ی تابع CONVERT و استایلی که برای آن می توان تعریف کرد مساله حل می شود.
(اگر واقعا می خواهید متوجه بشید که مشکل اساسی کدتان به چی مربوط است کافیه مقادیر دو متغیر زمان شروع و زمان پایان را print کنید)
در نهایت کد مطلوب شما به این شکل در خواهد آمد:
هم اکنون که دارم این پست را میزنم ساعت در حدود 3:06 دقیقه PM است. پس OK باید چاپ شود.
Declare @Start_T datetime,
@End_T datetime,
@Current_Time datetime;
Set @Start_T = '09:00 AM'
Set @end_T = '04:00 PM'
Set @Current_Time = GetDate()
if convert(varchar(50), @Current_Time, 114)
Between convert(varchar(50), @Start_T, 114)
and convert(varchar(50), @end_T, 114)
Print ' OK '