Во-первых, я использую Derby, которого я ненавижу, но для этого проекта. Я пытаюсь отбросить конкретные годы в очень простом запросе и постоянно сталкиваться с ошибками. Я надеюсь, что кто-то здесь сможет указать, что я могу делать неправильно.SQL Derby get year
select customer, transaction, year(paymentdate) as pmtdate, amount
from paymenttable
where pmtdate like '%2012%'
Это кажется тривиальным, но я не могу выполнить вышеуказанный запрос правильно. год (paymentdate) возвращается как дата. Любые рекомендации будут оценены.
Спасибо!
«* и SQL в целом *» не true. Стандарт SQL определяет 'extract' для этого: 'extract (year from some_date)'. В стандарте SQL нет функции 'year()'. Кроме того, вы не должны использовать 'like' для целых чисел для строк. правильным условием будет 'year (pmtdate) = 2012' –
@a_horse_with_no_name Спасибо за clairification - отредактирован. Я знаю, что функции MySQL и MSSQL 'YEAR' выполняют точно то же самое и имеют типы возврата' int', и, таким образом, обобщили его в моей голове. И хотя 'LIKE' действительно для строк, существуют ли случаи, когда он не обновляет (как известно,) int? Хотя я, конечно, обычно использовал бы '=' в этом случае, я стараюсь быть великодушным в интерпретации других примеров - ''% 2012% ''может просто быть простой подставкой для более сложного сгенерированного условия. –