You can coerce all values to be strings on the fly, without modifying the spreadsheet, by using arrayformula(your_range & "")
:
=query(arrayformula(A2:B10 & ""), "select Col1, Col2", 0)
Concerning the dates, note that internally they are represented as the number of days since December 30, 1899: for example, March 4, 2015 is 42770. So the query given above will get "42770" instead of what you might expect. This might be difficult to use for anything.
Specifically for date-to-string conversion, the following arrayformula works better (put it inside of the query as above):
arrayformula(iferror(text(A2:B10, "yyyy-MM-dd"), A2:B10))
The dates will now appear "2015-03-04" instead of "42770".
Presumably, you will want to return to numbers at some point, after the query did its job. Another arrayformula
can do that:
=arrayformula(iferror(value(C2:D10), C2:D10))
And the date appearance will be restored if the output of the arrayformula is formatted as Date.