2014-11-26 2 views
5

Ich habe eine Tabelle Daten MySQL, das aussieht wie untenMySQL, Datenteilung Spalte und von gesplitteten Daten führen bekommen

+--------------------------+ 
| period     | 
+--------------------------+ 
| 2014-11-27 to 2014-11-28 | 
| 2014-11-09 to 2014-11-09 | 
| 2014-11-07 to 2014-11-07 | 
| 2014-11-06 to 2014-11-06 | 
| 2014-11-04 to 2014-11-04 | 
| 2014-11-02 to 2014-11-02 | 
| 2014-11-01 to 2014-11-02 | 
| 2014-10-24 to 2014-10-24 | 
| 2014-10-23 to 2014-10-24 | 
| 2014-10-23 to 2014-10-24 | 
| 2014-10-23 to 2014-10-23 | 
| 2014-10-23 to 2014-10-23 | 
| 2014-10-20 to 2014-10-20 | 
| 2014-10-18 to 2014-10-18 | 
| 2014-10-17 to 2014-10-17 | 
| 2014-10-13 to 2014-10-13 | 
| 2014-10-13 to 2014-10-13 | 
| 2014-10-09 to 2014-10-10 | 
| 2014-10-06 to 2014-10-07 | 
| 2014-10-01 to 2014-10-10 | 
| 2014-09-30 to 2014-09-30 | 
| 2014-09-24 to 2014-09-24 | 
| 2014-09-12 to 2014-09-12 | 
| 2014-09-12 to 2014-09-12 | 
| 2014-09-08 to 2014-09-09 | 
| 2014-09-08 to 2014-09-08 | 
| 2014-09-08 to 2014-09-08 | 
| 2014-09-01 to 2014-09-01 | 
| 2014-09-01 to 2014-09-01 | 
+--------------------------+ 

Hier Ich mag würde die Details zwischen zwei Daten wie (2014-09-01 to 2014-09-30) oder (2014-09-01 to 2014-010-3 erhalten 0) oder (2014-09-01 to 2014-11-30) und es ist eine varchar Spalte, gibt es irgendwelche Möglichkeiten, Ergebnisse zwischen zwei Daten zu bekommen?

Antwort

1

ich denke, ist unten rechts ein,

select period from mysql_common.leave_details 
where (period like '%-11-%' or period like '%-10-%' or period like '%-09-%') 
order by period desc; 
+0

Scheint mir, dass dies nicht wirklich Antwort auf Ihre ursprüngliche Frage ist. –

0

Try this:

SELECT * 
FROM table1 A 
WHERE DATE(LEFT(A.period, 10)) BETWEEN DATE('2014-09-01') AND DATE('2014-09-30') AND 
     DATE(RIGHT(A.period, 10)) BETWEEN DATE('2014-09-01') AND DATE('2014-09-30'); 
1

erste, was Sie sollten wirklich Ihren Tisch normalisieren und speichern die Daten mit mysql nativen Datum Datentypen und stellen Sie sicher, Sie speichern sie in zwei Spalten start_date und end_date. Dies wird dein Leben erleichtern.

kommen nun zurück auf die aktuelle Situation gibt es eine Art und Weise Sie es tun können, zunächst die Start- und Enddatum der substring_index Funktion varchar String extrahieren und sie schließlich in der Bedingung having-Klausel verwenden.

select 
str_to_date(substring_index(period,'to',1),'%Y-%m-%d') as start_date, 
str_to_date(substring_index(period,'to',-1),'%Y-%m-%d') as end_date, 
period 
from table_name 
having start_date >='2014-09-01' and end_date <='2014-09-30'; 
+0

danke es funktioniert gut. –

Verwandte Themen