Σιακαβέλης Δημήτριος Τ-1800 Βασιλάκος Γεώργιος Τ-1786 Εργαστήριο 6 Ασκήσεις Σημειώσεων: 6) SELECT ENAME,DATENAME(mm,HIREDATE) AS 'Month_Hired' FROM EMP WHERE (HIREDATE > DATEADD(mm,8,'3-4-81')) 7) SELECT ENAME, HIREDATE, DATEADD(yy,1,HIREDATE) AS 'Date_After_A_Year', SAL+(SAL*15)/100 AS 'Increased_Salary' FROM EMP Ασκήσεις Φυλλαδίου: 1) Να εμφανισθεί η τρέχουσα ημερομηνία στη μορφή π.χ. 25/12/1998. SELECT CONVERT(CHAR(20),GETDATE(),101) 2) Να εμφανισθεί η τρέχουσα ημερομηνία α) με επιπλέον 36 ημέρες: SELECT DATEADD(dd,36,GETDATE()) β) με μείον 45 ημέρες: SELECT DATEADD(dd,-45,GETDATE()) 3) Να εμφανισθεί η τρέχουσα ημερομηνία: α) με επιπλέον 3 μήνες: SELECT DATEADD(mm,3,GETDATE()) β) με μείον 4 μήνες: SELECT DATEADD(mm,-4,GETDATE()) 4) Να εμφανισθεί η τρέχουσα ημερομηνία: α) με επιπλέον 5 χρόνια: SELECT DATEADD(yy,5,GETDATE()) β) με μείον 15 χρόνια: SELECT DATEADD(yy,-15,GETDATE()) 5) Να παράγετε την εξής έξοδο για όλους τους εργαζόμενους. Να είναι ταξινομημένα σύμφωνα με τη δεύτερη στήλη. ENAME DATE_HIRED ---------- --------------------------- JONES April,2 1981 SMITH December,17 1980 SELECT ENAME, CONVERT(CHAR(20),HIREDATE,107) AS 'DATE_HIRED' FROM EMP ORDER BY DATE_HIRED 6) Τι σημαίνουν τα παρακάτω ερωτήματα: α) SELECT DATEADD(YY, 0, 0) β) SELECT DATEADD(YY, 0, 0.001) Η συνάρτηση DATEADD προσθέτει ημερομηνίες. Εκτελώντας λοιπόν αυτές τις εντολές SQL, λέγοντας δηλαδή στην SQL να προσθέσει 0 χρόνια στην χρονολογία 0, καταλαβαίνουμε ότι το «0» για την SQL είναι η ημερομηνία 01-01-1900. 7) Να παράγετε την εξής έξοδο (την σημερινή ημερομηνία): ----------------------------------------------------------- simera einai December kai o minaς exei 13 SELECT 'simera einai ' + DATENAME(MM, GETDATE()) + ' kai o minas exei ' + DATENAME(DD, GETDATE()) AS ' ' 8) Να εμφανισθεί ο κωδικός πελάτη, ο κωδικός παραγγελίας και οι μήνες που έχουν περάσει από τότε που έγινε η παραγγελία για τους πελάτες μέχρι σήμερα, με κωδικό πελάτη 100 ή 104, ταξινομημένα κατά κωδικό πελάτη και κωδικό παραγγελίας. SELECT CUSTID, ORDID, DATEDIFF(mm,ORDERDATE,GETDATE()) AS 'Days_Passed' FROM ORD WHERE CUSTID = 100 OR CUSTID = 104 ORDER BY CUSTID, ORDID 9) Για παραγγελίες που έγιναν το μήνα Ιούνιο, να βρείτε τη συνολική ποσότητα παραγγελίας καθώς και το μέσο όρο ημερών που χρειάστηκε για να σταλούν αυτές οι παραγγελίες. SELECT TOTAL, DATEDIFF(dd,ORDERDATE,SHIPDATE) FROM ORD WHERE ORDERDATE LIKE '%JUN%' 10) Υπάρχει παραγγελία που στάλθηκε διαφορετικό μήνα από αυτόν που έγινε η παραγγελία; SELECT TOTAL FROM ORD WHERE DATEDIFF(mm,ORDERDATE,SHIPDATE) > 0 11) Αν υποθέσουμε ότι ο μισθός αυξάνεται κατά 15% το χρόνο, να εμφανίσετε τα ονόματα των υπαλλήλων, τη τρέχουσα ημερομηνία, το μισθό που παίρνουν τώρα, την ημερομηνία σε ένα χρόνο από τώρα και το μισθό που θα παίρνουν τότε. (Υποθέτουμε ότι το hiredate είναι σημερινό). SELECT ENAME, HIREDATE, SAL, DATEADD(yy,1,HIREDATE) AS 'Date_After_A_Year', SAL+(SAL*15)/100 AS 'Increased_Salary' FROM EMP