How can I convert an integer date to a formatted date string?

I have a column containing dates as integers (like 20250401). How can I convert these to formatted date strings (YYYY-MM-DD) in Deephaven?

The best practice is to first format the integer as a proper date string, then use Deephaven's built-in parseLocalDate function:

// Sample table with integer dates
def source = newTable(
    intCol("DateInt", 20230101, 20240215, 20250401, 20260630)
)

// Best practice: Format as string, then parse as LocalDate
def result = source.update(
    "Year = (int)(DateInt / 10000)",
    "Month = (int)((DateInt % 10000) / 100)",
    "Day = (int)(DateInt % 100)",
    "DateString = String.format(\"%04d-%02d-%02d\", Year, Month, Day)",
    "DateFormatted = parseLocalDate(DateString)"
)

This approach works by:

  1. Extracting the year by dividing the integer by 10000 (e.g., 20250401 / 10000 = 2025).
  2. Extracting the month by taking the remainder after dividing by 10000, then dividing by 100 (e.g., 20250401 % 10000 = 401, then 401 / 100 = 4).
  3. Extracting the day by taking the remainder after dividing by 100 (e.g., 20250401 % 100 = 1).
  4. Using String.format to create a properly formatted ISO date string (YYYY-MM-DD).
  5. Using parseLocalDate to convert the string to a proper LocalDate object.

This is the recommended approach because:

  • It creates proper LocalDate objects that can be used for further date operations.
  • It handles date validation automatically through parseLocalDate.
  • It follows Deephaven best practices by using built-in parsing functions.
  • The resulting LocalDate objects work seamlessly with other time-based functions.

Note

These FAQ pages contain answers to questions about Deephaven Community Core that our users have asked in our Community Slack. If you have a question that is not in our documentation, join our Community and we'll be happy to help!