@@ -188,6 +188,54 @@ def test_series_round_trip(
188188 {"name" : "num_col" , "type" : "NUMERIC" },
189189 ],
190190 ),
191+ pytest .param (
192+ * DataFrameRoundTripTestCase (
193+ input_df = pandas .DataFrame (
194+ {
195+ "row_num" : [1 , 2 , 3 ],
196+ # DATE valuess outside the pandas range for timestamp
197+ # aren't supported by the db-dtypes package.
198+ # https://github.com/googleapis/python-bigquery-pandas/issues/441
199+ "date_col" : [
200+ datetime .date (1 , 1 , 1 ),
201+ datetime .date (1970 , 1 , 1 ),
202+ datetime .date (9999 , 12 , 31 ),
203+ ],
204+ # DATETIME values outside of the range for pandas timestamp
205+ # require `date_as_object` parameter in
206+ # google-cloud-bigquery versions 1.x and 2.x.
207+ # https://github.com/googleapis/python-bigquery-pandas/issues/365
208+ "datetime_col" : [
209+ datetime .datetime (1 , 1 , 1 ),
210+ datetime .datetime (1970 , 1 , 1 ),
211+ datetime .datetime (9999 , 12 , 31 , 23 , 59 , 59 , 999999 ),
212+ ],
213+ "timestamp_col" : [
214+ datetime .datetime (1 , 1 , 1 , tzinfo = datetime .timezone .utc ),
215+ datetime .datetime (1970 , 1 , 1 , tzinfo = datetime .timezone .utc ),
216+ datetime .datetime (
217+ 9999 ,
218+ 12 ,
219+ 31 ,
220+ 23 ,
221+ 59 ,
222+ 59 ,
223+ 999999 ,
224+ tzinfo = datetime .timezone .utc ,
225+ ),
226+ ],
227+ },
228+ columns = ["row_num" , "date_col" , "datetime_col" , "timestamp_col" ],
229+ ),
230+ table_schema = [
231+ {"name" : "row_num" , "type" : "INTEGER" },
232+ {"name" : "date_col" , "type" : "DATE" },
233+ {"name" : "datetime_col" , "type" : "DATETIME" },
234+ {"name" : "timestamp_col" , "type" : "TIMESTAMP" },
235+ ],
236+ ),
237+ id = "issue365-extreme-datetimes" ,
238+ ),
191239]
192240
193241
0 commit comments