2017-02-21 36 views
0

我有一個MySQL列設置以下MySQL的SELECT查詢字符串分割搜索值

日期範圍= 2017年2月27日 - 2017年2月29日

現在我想

SELECT * FROM leaves WHERE daterange (>= firstvalue && <= secondvalue) 

這可能嗎?將每個值分開,因爲它們被保存爲一個字符串?否則,我想我必須在插入表之前拆分日期範圍。

+0

哪些數據類型是daterange,firstvalue和secondvalue? – scaisEdge

+0

@Chad。 。 。在將日期範圍插入表格之前拆分日期範圍。不要製造混亂。 –

回答

1

假設日期範圍,firstvalue和secondvalue是合適的日期(日期時間)數據類型可以使用

之間
SELECT * 
FROM leaves 
WHERE daterange BETWEEN firstvalue AND secondvalue 

如果一些值involed不是最新的數據類型,但VARCHAR你應該使用STR_TO_DATE適當的轉換或

+0

謝謝,不過firstvalue和secondvalue值不存在,只有daterange確實存在,並且它實際上存儲爲「02/27/2017 - 02/29/2017」varchar類型。猜猜這不可能吧? – Robert

+0

所以你應該在兩個適當的部分分割字符串.. .. obatin兩個不同的值..? 。 – scaisEdge

0

首先,修復你的數據結構。這裏有事情是錯誤的保存像是範圍:

  • 日期應存放在本機格式(datedatetime),而不是字符串。
  • 列應該有一個值。
  • 必須對列執行字符串操作通常會阻止使用索引。

也就是說,有時候你會被其他人的設計決定困住。所以,如果你完全無法修復數據結構,那麼有一個解決方法。您可以將範圍轉換爲您需要的值:

where $date >= str_to_date(left(daterange, 10), '%m-%d-%Y') and 
     $date <= str_to_date(right(daterange, 10), '%m-%d-%Y') 
+0

謝謝!我同意,數據結構是完全混亂的,我試圖修改別人的項目。我會放棄這一點。 – Robert