الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف اعرف التاريخ في الSQL ?

مغلق
بدأه برمجة في 1 ديسمبر 2002 · 6 رد · 705 مشاهدة · في قواعد بيانات Oracle
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته..........

عملت جدول و من ضمن المتغيرات اريد تعريف متغير هو عبارة عن تاريخ انا عرفته على انه DATE و لكن عند تعبئة الجدول يطلع ERROR عند خانة التاريخ ؟

اتمنى الرد سريعا و شكرا ......

#2

أخي الكريم ..

إن كنت تقصد متغيراً في VB فأحطه بعلامتي اقتباس مفردة ' '

ولو وضحت أكثر بالمثال لربما تجد الجواب إن شاء الله

#3

لقد كتبت لك المثال و الخطأ الذي يظهر لي

CREATE TABLE Booking(

hno        NUMBER(4)    NOT NULL,

gno        NUMBER(4)    NOT NULL,

Date_From  DATE         NOT NULL,

Date_To    DATE         NOT NULL,

CONSTRAINT Booking_gno_pk PRAIMARY KEY (gno));

SQL> INSERT INTO Booking(hno,gno,Date_From,Date_To)

  2  VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO');

Enter value for hotel_num: 1500

Enter value for guest_num: 200

Enter value for date_from: 11-09-2001

Enter value for date_to: 11-10-2001

old   2: VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO')

new   2: VALUES(1500,200,'11-09-2001','11-10-2001')

VALUES(1500,200,'11-09-2001','11-10-2001')

                *

ERROR at line 2:

ORA-01843: not a valid month

شكرا مرة اخرى

#4

السلام عليكم

الاخ برمجه

المشكله هيا في اختلاف الDATE FORMAT

على العموم لكي تستطيع اضافه سجل جديد استخدم احد

الحلول التاليه :-

1 - كتابه التاريخ " المشكله في كتابه الشهر فقط " بالشكل المحدد في

قاعده البيانات وهو افتراضيا كالتالي : DD-MON-YYYY مثلا

SQL> INSERT INTO Booking(hno,gno,Date_From,Date_To)

  2  VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO');

Enter value for hotel_num: 2000

Enter value for guest_num: 1429

Enter value for date_from: 11-oct-2002

Enter value for date_to: 12-dec-2002

old   2: VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO')

new   2: VALUES(2000,1429,'11-oct-2002','12-dec-2002')



1 row created.



SQL>

2- تعديل الDATE FORMAT وله طريقتين

أ - تعديل الDATE FORMAT مؤقته وذلك بتنفيذ الكود التالي :-

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY';

وسوف تتمكن من ادخال التاريخ بالصيغه التى اردتها في مثالك :-

SQL> INSERT INTO Booking(hno,gno,Date_From,Date_To)

  2  VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO');

Enter value for hotel_num: 1234

Enter value for guest_num: 4321

Enter value for date_from: 1-1-2002

Enter value for date_to: 12-4-2002

old   2: VALUES(&HOTEL_NUM,&GUEST_NUM,'&DATE_FROM','&DATE_TO')

new   2: VALUES(1234,4321,'1-1-2002','12-4-2002')



1 row created.



SQL>

** لكن لاحظ هنا انك بمجرد عمل خروج او Disconnect لهذا المستخدم

فسيعود ال DATE FORMAT للشكل الافتراضي له وهو DD-MON-YYYY .

ب- لتغيير الDATE FORAMT وتثبيته على طول قم بتشغيل الREGEDIT

واذهب الى الملف HKEY_LOCAL_MACHINESOFTWAREORACLE

والى الملف HKEY_LOCAL_MACHINESOFTWAREORACLEHOME0

والملف HKEY_LOCAL_MACHINESOFTWAREORACLEHOME1

** الى تلاقيه منهم

واضف به مفتاح تسلسلي جديد"New String Value "

واجعل اسمه NLS_DATE_FORMAT وقيمته DD-MM-YYYY

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

والسلام عليكم

عمر باعقيل

كندا - مونتريال

baaqeel@arabteam2000.com

#5

و عليكم السلام و رحمة الله و بركاته

لقد استخدمت الكود

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYY';

و ضبط معايا الجدول من غير اخطاء

و اكرر شكري لك يا أخ عمر

و السلام عليكم....

#6

بدلا عن تغيير ال session كل مرة، وإن كنت تحب ان تستخدم فورمات تختلف عما لديك في القاعدة، ولاتعلم كيف تغيير ذلك بشكل ثابت، يمكنك استخدام الامر التالي

SQL> INSERT INTO Booking(hno,gno,Date_From,Date_To)

  2  VALUES(&HOTEL_NUM,&GUEST_NUM,

  3  to_date('&DATE_FROM','dd/mm/yyyy'),

  4  to_date('&DATE_TO','dd/mm/yyyy'));

Enter value for hotel_num: 11

Enter value for guest_num: 15

old   2: VALUES(&HOTEL_NUM,&GUEST_NUM,

new   2: VALUES(11,15,

Enter value for date_from: 03/12/2002

old   3: to_date('&DATE_FROM','dd/mm/yyyy'),

new   3: to_date('03/12/2002','dd/mm/yyyy'),

Enter value for date_to: 03/12/2003

old   4: to_date('&DATE_TO','dd/mm/yyyy'))

new   4: to_date('03/12/2003','dd/mm/yyyy'))



1 row created.



SQL>
#7

السلام عليكم

شكرا لك يا أخ السني فقد جربت الأمر الذي كتبته و كان الحل اسهل من اعادة الأمر عدة مرات و شكرا لك يا أخ عمر على الكود الذي كتبته فقد استفدت منه ايضا.........

هذا الموضوع مغلق.

مواضيع مشابهة