Showing posts with label SQL Server. Show all posts
Showing posts with label SQL Server. Show all posts

Sunday, January 17, 2010

SQL Server Date Formats

בלינק הבא תמצאו כמעט את כל הפורמטים האפשריים להמרת תאריך ב-SQL Server:
http://www.sql-server-helper.com/tips/date-formats.aspx

Sunday, November 30, 2008

datepart של רבעון ושנה:SQL Server

אתם מעוניינים לשרשר מתוך שדה התאריך בעולם שדה זמן חדש שיכלול פורמט של רבעון ושנה:Q1-2008
הנה הפונקצייה ל- SQL Server:

'Q'+convert(varchar, datepart(qq, pubs.dbo.sales.ord_date))+'-'+ convert(varchar, datepart(yyyy, pubs.dbo.sales.ord_date))

Tuesday, November 18, 2008

טריק:איך לתזמן דוח רק במידה והוא מחזיר נתונים

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

משהו כמו (מתאים ל- SQL server ) :

=CAST(CASE count(*) WHEN 0 THEN '0 rows returned forced SQL error' ELSE count(*) END AS int)

מאחר ו- SQL server לא יכול לבצע cast על ההודעה הוא יייצר הודעת שגיאה ייזומה מה שיפיל את ה- Instance והדוח לא יתוזמן ועל כן גם לא ישלח,במידה ויוחזרו רשומות,הריצה תתבצע כרגיל,הדוח ישלח ליעדו ותוכלו לחגוג עם החבר'ה בהרמת כוסית קפה.

אם אתם על Oracle תצטרכו לחקות את ה-SQL עם תחביר מקביל או דומה.

Thursday, November 6, 2008

פונקציית זמן לדיזיינר : חודש קודם

טוב ל- SQL Server :

datepart(month,dateadd(month,-1,getdate()))

אם היום דצמבר,הפונקצייה מחזירה את החודש הקודם (נובמבר) ולא 30 יום אחורה...

יום אחרון בכל חודש

אוהבים להציג את היום האחרון בכל חודש ?

הפונקצייה טובה ל- SQL Server ומחזירה עבור כל חודש (בתקופת הזמן הנבחרת) את היום האחרון בחודש:

select dateadd (dd,-(day(dateadd(mm,1,table.period_date))),dateadd(mm,1,table.period_date))

add_months(date,1)-1

Day diff in days,hours,minutes SQL Server+Oracle

הנה פונקציות לחישוב הפרש בימים,שעות,דקות בין תאריכים:

כמובן שאת ה- SQL אתם יכולים לשבץ בעולם כאובייקט המחשב את הזמן בימים,שעות,דקות...
SQL server:

SELECT DATEDIFF(day, 0, DATEADD(minute, DATEDIFF(minute, PROCESS.date_created, PROCESS.date_modified), 0))as days,DATEPART(hour, DATEADD(minute, DATEDIFF(minute, PROCESS.date_created, PROCESS.date_modified), 0))as hour, DATEPART(minute, DATEADD(minute, DATEDIFF(minute, PROCESS.


באורקל:

SELECT floor((date1-date2)*24) ' HOURS ' mod(floor((date1-date2)*24*60),60) ' MINUTES ' mod(floor((date1-date2)*24*60*60),60) ' SECS ' time_difference FROM dates;

חודש נוכחי - SQL Server

היי
פונקציית זמן אשר ניתן לשלב בעולם,כתנאי כבסיס להשוואה מול תאריך או כפרומפט ומחזירה את החודש הנוכחי בשנה הנוכחית,טוב ל- SQL Server :


{fn year(convert (SMALLDATETIME, {fn CURDATE()}))}*100+{fn month(convert (SMALLDATETIME, {fn CURDATE()}))}
כרגיל היישור...אבל בהעתקה לדיזיינר זה יסתדר.

Wednesday, November 5, 2008

הפרש ימים ב – prompt, פונקצייה לדיזיינר ב- SQL Server

במידה ומעוניינים להפיק דוח אשר יציג את כל התקלות שפתוחות מעל X ימים ניתן
לחשב את הפרש הימים ע"י פונקצית daydiff בין 2 תאריכים,כלומר כמה ימים עברו
מתאריך פתיחת התקלה ועד תאריך סגירת התקלה.

להלן הקוד (שוב מתאים ל- SQL Server בקרוב הפתעה לחובבי ה- Oracle):

DateDiff(Day, PROCESS.date_open, PROCESS.date_closed) > @variable
('בחר מספר ימים בין תאריך פתיחת תקלה לתאריך סגירת תקלה')

פונקצייה לדיזיינר : הורדת סוגריים משדה מסוג character

אז נניח שיש לכם שדה כלשהוא:מס' טלפון,שם לקוח וכו' ואתם מעוניינים להוריד ממנו את הסוגריים.
הבעיה עם הסוגריים היא שהם יכולים להתחיל בכל מקום ולהסתיים בכל מקום,על כן !
נכתוב את הנוסחא הבא המתאימה ל-SQL Server :

substring(tablename.columnname,charindex('(',tablename.columnname)+1,len(tablename.columnname)-charindex('(',tablename.columnname)-1)