2016-03-29 3 views
1

Hallo, ich versuche SQL zu lernen und arbeite an einer kleinen Übung. Ich möchte alle IDs aus einer Tabelle zurückzugeben, die ein Datum nach 2014 Heres, was ich habe:Probleme mit der Rückgabe eines Datums nach 2014

 CREATE TABLE Pick_Up(
    eid INT, 
    pid INT, 
    cid int, 
    datetime DATETIME, 
    ); 
INSERT INTO Pick_Up (eid, pid, datetime) 
VALUES (3, 7,'2015/4/23 16:35:05'), 
     (4, 6,'2016/3/20/ 9:05:45'); 
SELECT P.pid 
FROM pick_up P 
WHERE year(p.datetime)> '2014'; 

Und ich dachte, es würde beide Tupel zurück, aber wenn ich es benutze ich nichts. Wenn jemand mir helfen könnte, indem er mir sagt, was ich tun kann, um beide Werte zurückzubekommen, wäre das unglaublich toll!

+0

Die Beispieldaten Sie auf dem Laufenden enthält Fehler in Datetime-Daten. Zweitens glaube ich, dass die year() -Funktion das ganzzahlige Ergebnis liefert, also sollten Sie die Zitate um 2014 in der 'where'-Bedingung loswerden. – Harsh

+0

Ihre Abfrage funktioniert für mich, wenn ich 'p.datetime' in' P.datetime' ändere. Sonst bekomme ich einen Fehler. – Barmar

+0

@Barmar Was? Sie haben eine Case-Sensitive-Implementierung von MySQL ??? – Strawberry

Antwort

0

Einziges Problem ist Syntaxfehler gibt es ein zusätzliches Komma,

SELECT P.pid FROM pick_up P WHERE year(p.datetime)> 2014; 

Zweitens Jahr ist nicht Zeichenfolge numerisch.

0
SELECT P.pid 
FROM pick_up P 
WHERE year(p.datetime)> 2014 [ year(p.datetime) may result in integer ] 

oder versuchen, so etwas wie dieses

SELECT P.pid 
FROM pick_up P 
WHERE datepart(yy,p.datetime)> 2014 
Verwandte Themen