none
המרה לתאריך בפורמט מסויים RRS feed

  • שאלה

  • שלום,

    אני רוצה להמיר את הערך המתקבל מהפונקציה getdate() לערך בפורמט: 'dd/mm/yyyy HH24:MI:SS'

    ניסיתי לבצע זאת ע"י שימוש ב-convert באופן הבא:

    select convert (datetime, getdate(), 103)

    התוצאה שקיבלתי:

    2012-02-28 15:51:49.737

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

    מה הסיבה לכך? איך ניתן לקבל את הפורמט הרצוי?

    תודה מראש,

    מיכל 

    יום שלישי 28 פברואר 2012 13:55

תשובות

  • שלום

    select convert(nvarchar(30),getdate(), 103)

    פונקציה GETDATE מחזירה טיפוס DATETIME ממילא כך שההמרה מיותרת. את רוצה להמיר למחרוזת...

    HTH


    Ami Levin, SQL Server MVP. CTO, DBSophic LTD. - http://www.dbsophic.com/ --Performance is the most significant driver in maintaining data and service availability.--

    • סומן כתשובה על-ידי michal12 יום רביעי 29 פברואר 2012 07:48
    יום שלישי 28 פברואר 2012 15:23
  • לא בטוח שהבנתי מה שרצית:
    קוד 103 מחזיר תאריך ללא שעה 28/02/2012.
    יש קודים שמחזירים גם תאריך וגם שעה אבל לא בפורמט שציינת.
    אם את רוצה בדיוק בפורמט שציינת נסי לחבר את הפלט של קוד 103 עם הפלט של קוד 108 (ורווח בינהם):
    selectconvert(nvarchar(30),getdate(), 103)+' '+convert(nvarchar(30),getdate(), 108);

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


    Geri Reshef http://gerireshef.wordpress.com


    • נערך על-ידי Geri_Reshef יום שלישי 28 פברואר 2012 18:21 טעות כתיב
    • סומן כתשובה על-ידי michal12 יום רביעי 29 פברואר 2012 07:48
    יום שלישי 28 פברואר 2012 18:20

כל התגובות

  • שלום

    select convert(nvarchar(30),getdate(), 103)

    פונקציה GETDATE מחזירה טיפוס DATETIME ממילא כך שההמרה מיותרת. את רוצה להמיר למחרוזת...

    HTH


    Ami Levin, SQL Server MVP. CTO, DBSophic LTD. - http://www.dbsophic.com/ --Performance is the most significant driver in maintaining data and service availability.--

    • סומן כתשובה על-ידי michal12 יום רביעי 29 פברואר 2012 07:48
    יום שלישי 28 פברואר 2012 15:23
  • לא בטוח שהבנתי מה שרצית:
    קוד 103 מחזיר תאריך ללא שעה 28/02/2012.
    יש קודים שמחזירים גם תאריך וגם שעה אבל לא בפורמט שציינת.
    אם את רוצה בדיוק בפורמט שציינת נסי לחבר את הפלט של קוד 103 עם הפלט של קוד 108 (ורווח בינהם):
    selectconvert(nvarchar(30),getdate(), 103)+' '+convert(nvarchar(30),getdate(), 108);

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


    Geri Reshef http://gerireshef.wordpress.com


    • נערך על-ידי Geri_Reshef יום שלישי 28 פברואר 2012 18:21 טעות כתיב
    • סומן כתשובה על-ידי michal12 יום רביעי 29 פברואר 2012 07:48
    יום שלישי 28 פברואר 2012 18:20
  • אני מניח שגרי מדבר על פונקציית FORMAT שנכנסה בצורה מובנית ב SQL 2012 אבל ניתן פשוט להכניס לבד את הפונקציה FORMAT כמו שאני ממליץ בכל מסד נתונים שתומך ב CLR ז"א מגרסה 2005. מדובר שורת קוד אחת בלבד וכתוצאה יהיה לך את היכולת של SQL 2012 (בנקודה הספציפית הזו מכיוון שכאן לא מדובר ביכולת חדשה אלא רק בהוספת פונקציה מובנית כדי לחסוך לנו זמן להכניס אותה לבד). היעילות תהיה יותר גבוהה משימוש ב 2 המרות של תאריך לטקסט (אני מעריך שזה יצא פי 2 יותר יעיל כי תבוצע המרה אחת בלבד).

    עם זה הפתרון של גרי הוא הפתרון של SQL נקי ואם אין כל כך רצון בהשקעה במיטוב ומחפשים פתרון מהיר אז זו תשובה שגם אני הייתי בוחר כנראה


    signature

    יום רביעי 29 פברואר 2012 07:45
    מנחה דיון
  • תודה רבה לכולכם.

    גרי, הפתרון שהצעת הוא בדיוק מה שאני צריכה. תודה!

    מיכל

    יום רביעי 29 פברואר 2012 07:50