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

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

איציק ברבי 20-08-12 23:04

ארגון נתונים של הוצאה ממסד לפי מחרוזת.
 
יש לי עמודה במסד בשם time
והיא בנוייה בפורמט כזה:
PHP קוד:

hour:minute 

אני רוצה למשל שהשעה 00:00 תהיה לפני 00:01
זאת הכוונה.

איך אני מבצע את זה? ORDER BY לא מועיל בקטע הזה.

------

העמודה הייתה בפורמט TEXT ולא בפורמט time
סידרתי את זה עם כמה דברים וזהו..

perfeito 20-08-12 23:28

למה לא להשתמש בפונקציה של mysql
()date

BuildDream 20-08-12 23:46

למה אתה לא מאחסן את הזמנים עם time() שמחזיר לך זמנים בint של שניות?
ככה אתה יכול למיין לפי זמנים (מספר גדול יותר = זמן מאוחר יותר)
וגם הצגה של הזמנים בכל פורמט שתרצה (אחרי השליפה להשתמש בפונקצייה date לקבלת איזה פורמט שתרצה).

איציק ברבי 21-08-12 02:51

אני מכיר את זה,
במקרה הזה אני צריך אותם ככה.

בניה 21-08-12 04:21

אם מה שמעניין אותך זה רק השעה והדקה, ומדובר בשעון 24 אני הייתי עושה שני שדות TINY INT שבאחד הייתי שומר את המספר של הדקה ובאחד את השעה
או שדה DATETIME ואם לא אכפת מהתאריך, תעשה שהכל באותו תאריך רק מה ששונה זה השעה והדקה.

אפשר בקלות לעשות שאילתא שתקח את הנתוני STRING שלך ותכניס אותם לשדות הרלונטים, אפילו בלי לערב PHP רק בMYSQL (במידה וזה לא טבלאות ענקיות כמובן...)

לחלופין: אם ממש לא אכפת לך מיעילות וזה איזה משהו חד פעמי אתה יכול בתוך השאילתה לפרק את הסטרינג למספר ולעשות את הORDER BY לפי זה אבל קח בחשבון שזה יהיה חייב לטייל על כל הטבלה

Daniel 21-08-12 07:02

כמו שכבר אמרו לך מה שלא תמצא - זה יהיה דיי לא יעיל. אבל אם אתה ממש צריך את זה - פתרון אפשרי (אך כמו שנאמר - לא יעיל בעליל):
תעשה:
PHP קוד:

ORDER BY LEFT(`time`, 2), RIGHT(`time`, 2

זה בעצם מסדר את זה בעדיפות ראשונה לפי השעה - ואם יש "תיקו" אז לפיהדקה. LEFT ו-RIGHT נותנים את התווים הכי ימניים והכי שמאליים בהתאמה.

איציק ברבי 21-08-12 14:35

ציטוט:

נכתב במקור על ידי Daniel (פרסם 855053)
כמו שכבר אמרו לך מה שלא תמצא - זה יהיה דיי לא יעיל. אבל אם אתה ממש צריך את זה - פתרון אפשרי (אך כמו שנאמר - לא יעיל בעליל):
תעשה:
PHP קוד:

ORDER BY LEFT(`time`, 2), RIGHT(`time`, 2

זה בעצם מסדר את זה בעדיפות ראשונה לפי השעה - ואם יש "תיקו" אז לפיהדקה. LEFT ו-RIGHT נותנים את התווים הכי ימניים והכי שמאליים בהתאמה.

נראה נחמד,
חידשתם לי דברים..

אדיר 21-08-12 14:41

למה לא להשתמש בשדה מהסוג המיועד לכך וזהו..?
https://dev.mysql.com/doc/refman/5.5...ime-types.html

איציק ברבי 21-08-12 14:43

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

שאלה נוספת -
יש לי ערך כזה
xx:xx:xxxx
אני רוצה לפצל את הxx:xx הראשונים סוג של explode אני מעוניין לבצע את זה דרך SQL.

בניה 21-08-12 15:00

הכל נמצא בתיעוד של MYSQL :-)


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

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