Im trying to do a diff_days(inventory_item.issued_date (timeframe group field date raw field is timestamp), inventory_item.valid_until (date db)
Without the lab function it generates this:
CAST(CASE WHEN (UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP))) - UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP)))) / (60 * 60 * 24) < 0 THEN CEILING((UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP))) - UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP)))) / (60 * 60 * 24)) ELSE FLOOR((UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP))) - UNIX_TIMESTAMP((CAST(CAST(DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd') AS DATE) AS TIMESTAMP)))) / (60 * 60 * 24)) END AS INT) `test`,
Which returns the negative values.
With the lab function on it does this:
CAST(CASE WHEN (UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd'))) - UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd')))) / (60 * 60 * 24) < 0 THEN CEILING((UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd'))) - UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd')))) / (60 * 60 * 24)) ELSE FLOOR((UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.issued_at , 'yyyy-MM-dd'))) - UNIX_TIMESTAMP((DATE_FORMAT(inventory_item.valid_until , 'yyyy-MM-dd')))) / (60 * 60 * 24)) END AS INT) `test`,
Which just returns null values. And I think its the unix_timestamp that doesn't work on a date field.
Using databricks DB.
Protip: maybe make it more clear/easier to report bugs?