2013-04-10 4 views
1

У меня проблема с атрибутом года рождения в таблице X (формат: yyyy), а также атрибутом даты рождения в таблице Y (в другом формате: dd-mm-yyyy).Присоединение к переменным с двумя различными форматами

Они оба атрибуты типа varchar(). Я хочу присоединиться к этим таблицам по этим атрибутам. Например, я хочу выбрать имена всех людей, родившихся в том же году. Как я могу это сделать?

+1

В какой таблице имена людей? Мне кажется, вам не нужны эти две таблицы. – Jerry

+1

Какие RDBMS (Oracle, MySQL, SQLServer и т. Д.) Вы используете? Строковые и датские функции/операторы различаются между СУБД. –

+0

@Mark Я использую SQLite. – jakeehoffmann

ответ

0

(Обновлено) Предполагая, что дата-на-рождение атрибута последовательно имеет последние четыре символа, как год, попробуйте:

select... 
from X 
join Y on X.year_of_birth = substr(Y.date_of_birth, length(Y.date_of_birth)-3,4) 

SQLFiddle here.

+0

Существует еще одна проблема: день 01 усечен до 1-го дня. Месяцы тоже ведут себя так. – jakeehoffmann

+0

@jakeehoffmann: см. Обновленный ответ. –

0

Попробуйте использовать DATE_FORMAT()

JOIN table2 ON DATE_FORMAT(table1.bday, "%Y") = DATE_FORMAT(table2.bday, "%Y") 
+0

DATE_FORMAT не является функцией SQLite. –

Смежные вопросы