고려 초에는 하주(河州)라 하였고 995년(성종 14) 자사(刺使)를 두었으며, 1018년(현종 9)하양현으로 고쳐 경주(慶州)에 속하였다가 뒤에 감무(監務)를 두었다. 1413년(태종 13) 현감(縣監)을 두었고 1601년(선조 34)대구(大丘)에 속하였다가 1607년 다시 현감을 두었다.
1715년(숙종 41) 치소(治所)를 기남(基南)에서 천천면(泉天面)으로 옮겼다. 1895년(고종 32)대구부(大邱府)의 하양군이 되었고 다음해 경상북도에 속하였으며, 1914년 행정구역개편 때 경산군 하양면이 되었다.
1973년하양면이 읍으로 승격되었고, 1995년경산군과 경산시가 통합됨에 따라 경산시 하양읍이 되었다. 이곳은 지형상 대구 동쪽 금호강의 분지에 자리하고 있어 임진왜란 때 왜군이 점령한 외에는 별다른 피해를 받지 않았다.
지명의 유래가 하천의 양지바른 곳이라는 의미를 가지는데, 조선시대에는 신령(新寧)ㆍ자인(慈仁)으로 통하는 남북간의 도로가 있었지만, 강을 따라 발달한 대구ㆍ영천ㆍ경주 간의 동서도로를 많이 이용하였다. 시산(匙山) 봉수가 북쪽의 회음동(會音洞)과 남쪽의 성산(城山) 봉수를 이어주었고, 화양역(華陽驛)이 있었다.