Сравнение даты SQL в предложении WHERE, TypoScript

Я хочу сравнить даты в выборе TypoScript. Вот что у меня есть (обратите внимание, что я прокомментировал предложения were):

lib.my_val = CONTENT
lib.my_val {
  select {
    pidInList = 100000
    max = 1
    #where = effective_date < CURDATE()
    #where = TIMESTAMP(effective_date) < NOW()
    orderBy = effective_date DESC
  }
  table = tx_my_table
  renderObj = COA
  renderObj {
    5 = TEXT
    5{
      field = my_field
      wrap = <span>|</span>
    }
    [...]
  }
}

Который возвращает строки.

Я пытался добавить оператор where любым способом со статическими датами или переменными... безуспешно. Мое понимание предложения where заключается в том, что все после = выгружается как есть в SQL-запросе. Но, кажется, я что-то упустил.

По сути, я хочу, чтобы TypoScript сгенерировал SQL-запрос, похожий на этот:

SELECT * FROM tx_my_table WHERE effective_date < NOW() ORDER BY effective_date DESC LIMIT 1;

Это должно быть просто. Кто-нибудь делал это в прошлом?

Спасибо!


person Jim    schedule 02.11.2012    source источник
comment
В каком формате эффективная_дата? Я предполагаю, что это дата и время YYYY-MM-DD, а не отметка времени?   -  person Mateng    schedule 02.11.2012


Ответы (1)


Похоже, ваш TypoScript в порядке.

  • Что произойдет, если вы введете SQL-запрос непосредственно в MySQL?
  • Обратите внимание, что в вашем коде выбрана только одна запись с pid=100000.
  • Вы пробовали это:

--

lib.my_val {  
       select {  
        pidInList = 100000  
        max = 1  
        where = UNIX_TIMESTAMP(effective_date) < UNIX_TIMESTAMP()  
        orderBy = UNIX_TIMESTAMP(effective_date) DESC  
      }  
      table = tx_my_table  
    }

Вики TYPO3 при выборе

person Mateng    schedule 02.11.2012
comment
UNIX_TIMESTAMP() сделал это. Я нахожусь в среде, где у меня нет доступа к БД, но я думаю, что дата хранится как INT... О, это то, что я пропустил. Спасибо. - person Jim; 02.11.2012