הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   הוצאת כל השורות שהוכנסו בחודש\שבוע האחרון ממסד SQL (https://hosts.co.il/forums/showthread.php?t=35066)

DCB 22-11-06 15:34

הוצאת כל השורות שהוכנסו בחודש\שבוע האחרון ממסד SQL
 
שלום יש לי מסד נתונים MySql
יש בטבלה שדה בשם date מסוג תאריך
אני רוצה להוציא ממנו את כל השורות שהוכנסו בחודש האחרון\בשבוע האחרון
יש דרך באמצעות שאילתה של sql לעשות את זה?

תודה מראש

Tomer 22-11-06 15:45

במידה וב date יש לך את הזמן כ UNIX Style, אתה יכול לעשות:
PHP קוד:


WHERE date
<time() 

כאשר זה בוחר את התאריכים שבהם date קטן מהזמן הנוכחי.

DCB 22-11-06 15:49

תודה רבה תומר,
ובנוגע למי שהתוהה על השאילתה המלאה:
PHP קוד:

mysql_query("SELECT * FROM `table` WHERE `date`>".date("Y-m-00")) 


O-B 22-11-06 15:49

ציטוט:

נכתב במקור על ידי Tomer (פרסם 378259)
במידה וב date יש לך את הזמן כ UNIX Style, אתה יכול לעשות:
PHP קוד:


WHERE date
<time() 

כאשר זה בוחר את התאריכים שבהם date קטן מהזמן הנוכחי.

זה לא כל כך נכון..
כי זה יוצא בעצם את כל הנתונים מהמסד.. כי כל תאריך שתכניס אילו לפני שניה הוא יהיה יותר קטן מהזמן הנוכני.. ולכן צריך עשות את זה ככה

PHP קוד:

WHERE date+(30*24*60*60)<time() 

זה יוצא את כל השדות שנכנסו לפני חודש..

DCB 22-11-06 15:50

ציטוט:

נכתב במקור על ידי O-B (פרסם 378265)
זה לא כל כך נכון..
כי זה יוצא בעצם את כל הנתונים מהמסד.. כי כל תאריך שתכניס אילו לפני שניה הוא יהיה יותר קטן מהזמן הנוכני.. ולכן צריך עשות את זה ככה

PHP קוד:

WHERE date+(30*24*60*60)<time() 

זה יוצא את כל השדות שנכנסו לפני חודש..

השאלה לא הייתה לגבי כל מה שהוכנס לפני חודש
אלה מה שהוכנס בחודש האחרון
זה אומר שאם עכשיו נובמבר, אז כל השדות שהוכנסו בנובמבר :)

O-B 22-11-06 15:54

אז אתה צריך לפרק את התאריך ולהכניס כל אחד בנפרד כלומר שדה של יום חודש ושנה
ואז להשוות

PHP קוד:

where month=date("m"


Tomer 22-11-06 21:08

מה שרשמתי לו הייתה הכוונה למה שהוא צריך לעשות, באמת שאני לא חשבתי על מה שזה ישלוף..

RS324 23-11-06 17:44

ציטוט:

נכתב במקור על ידי O-B (פרסם 378269)
אז אתה צריך לפרק את התאריך ולהכניס כל אחד בנפרד כלומר שדה של יום חודש ושנה
ואז להשוות

PHP קוד:

where month=date("m"


ממש ממש לא יעיל :
ברגע שהוא הכניס את הזמן של לינקוס הוא יכול לשחק איתו כמה שהוא רוצה

שייצור עם הפונקציה MKTIME את התאריך של ה 1.11.06 ויקבל זמן לינוקס של היום הזה
ופשוט יבדוק אותו.

eLad 23-11-06 18:18

ציטוט:

נכתב במקור על ידי O-B (פרסם 378269)
אז אתה צריך לפרק את התאריך ולהכניס כל אחד בנפרד כלומר שדה של יום חודש ושנה
ואז להשוות

PHP קוד:

where month=date("m"


לא צריך לפרק. יש פונקציה מובנית ב SQL בשביל זה

PHP קוד:

SELECT fld,fld2 FROM tbl WHERE MONTH(dDate)='" dMonthVar + "' AND YEAR(dDate)='" + dYearVar + "' 

כאשר dMonthVar ו dYearVar הם משתנים עם מספר החודש הנוכחי והשנה בהתאמה.

אני מניח שזה לא קשה ב PHP לקבל אותם. אם הייתי יודע PHP הייתי גם אומר לך איך כותבים את זה

ו dDate הוא כמובן שדה מסוג תאריך


כל הזמנים הם GMT +2. הזמן כעת הוא 02:06.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ