Как я аннотирую свойство JAXB для использования xsd:time, а не xsd:datetime?

Самое читаемое, IMO:

SELECT * FROM TABLE WHERE Date >
   DATEADD(yy, -1, CONVERT(datetime, CONVERT(varchar, GETDATE(), 101)))

, Который:

  1. Добирается, теперь дата и время , GETDATE () = # 27.08.2008 10:23am#
  2. Преобразовывает в строку с форматом 101 , ПРЕОБРАЗОВЫВАЮТ (varchar, # 27.08.2008 10:23am#, 101) =, '8/27/2007'
  3. Преобразовывает в дату и время , ПРЕОБРАЗОВЫВАЮТ (дата и время, '8/27/2007') = # 27.08.2008 12:00AM#
  4. Вычитает 1 год DATEADD (yy,-1, # 27.08.2008 12:00AM#) = # 27.08.2007 12:00AM#

существуют варианты с DATEDIFF и DATEADD для получения Вас полночь сегодня, но они имеют тенденцию быть довольно тупыми (хотя немного лучше на производительности - не, что Вы заметили бы по сравнению с чтениями, требуемыми выбирать данные).

6
задан Draemon 11 November 2009 в 11:47
поделиться

1 ответ

Если вы генерируете схему из классов Java, вам следует изменить следующее:

public class Game {
    private XMLGregorianCalendar startTime;

    @XmlElement
    @XmlSchemaType(name = "time")
    public XMLGregorianCalendar getStartTimeForSchema() {
      return startTime;
    }

    public void setStartTimeForSchema(XMLGregorianCalendar startTime) {
      this.startTime = startTime;
    }

    @XmlTransient
    public Date getStartTime() {
      return startTime.toGregorianCalendar().getTime();
    }

    @XmlTransient
    public void setStartTime(Date startTime) {
    GregorianCalendar gc = (GregorianCalendar) GregorianCalendar.getInstance();
      gc.setTime(startTime);
      DatatypeFactory dataTypeFactory = null;
      try {
        dataTypeFactory = DatatypeFactory.newInstance();
      } catch (DatatypeConfigurationException ex) {
        // log
      }
      this.startTime = dataTypeFactory.newXMLGregorianCalendar(gc);
    }
}
6
ответ дан 17 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: