I am loading the New York Trip data (https://www.nyc.gov/site/tlc/about/tlc-trip-record-data.page) from parquet files to to an Azure SQL database. The date is in the format TIMESTAMP_MICROS, what seems to be a timestamp as bigint. I could load the data to SQL Server.
Now I want to add a persisted computed column to convert the timestamp to a datetime. For the normal SELECT from the TOP 1000 the following query shows the proper format:
SELECT TOP 1000
CONVERT
(
datetime2,
DATEADD(S,[tpep_dropoff_datetime] / 1000000, CONVERT(datetime,'1970-01-01',120))
)
AS [pickup_datetime_]
FROM [dbo].[NYTaxi]
I tried to add a computed column with the following query:
ALTER TABLE [dbo].[NYTaxi]
ADD [pickup_datetime] AS
CONVERT
(
datetime2,
DATEADD(S, CAST(CAST([tpep_pickup_datetime] AS BIGINT) / CAST( 1000000 AS INT) AS INT), CONVERT(datetime,'1970-01-01',120))
)
PERSISTED;
But I always get the following error:
Msg 8115, Level 16, State 2, Line 8
Arithmetic overflow error converting expression to data type int.
Does anyone have an idea why the error happens? How can I solve that? If a date would be in the wrong format, I would also be happy to return a NULL value instead.