---
title: Cannot parse date troubleshooting
meta:
  description: Common issues and solutions for date parsing problems in ClickHouse and Tinybird.
---

# Cannot parse date troubleshooting

Common issues and solutions for date parsing problems in ClickHouse and Tinybird.

## Common errors

### CANNOT_PARSE_DATE

**Error**: `CANNOT_PARSE_DATE: Cannot parse date from string "invalid_date"`

**Cause**: Date string in unexpected format

**Solution**: Use proper date format or handle invalid dates
```sql
-- Handle invalid dates
SELECT toDateOrNull(date_string) as safe_date
FROM events
```

### CANNOT_PARSE_DATETIME

**Error**: `CANNOT_PARSE_DATETIME: Cannot parse DateTime from string "invalid_datetime"`

**Cause**: DateTime string in unexpected format

**Solution**: Use proper DateTime format
```sql
-- Use specific format
SELECT toDateTime(date_string, 'YYYY-MM-DD HH:MM:SS') as parsed_datetime
FROM events
```

## Date format issues

### Unexpected date formats

**Issue**: Dates in non-standard format

**Solution**: Use parseDateTimeBestEffort or specific format
```sql
-- Use best effort parsing
SELECT parseDateTimeBestEffort(date_string) as parsed_date
FROM events

-- Or use specific format
SELECT toDateTime(date_string, 'MM/DD/YYYY HH:MM:SS') as parsed_date
FROM events
```

### Timezone issues

**Issue**: Dates with timezone information

**Solution**: Handle timezones explicitly
```sql
-- Parse with timezone
SELECT toDateTime(date_string, 'UTC') as utc_datetime
FROM events
```

## Data validation

### Mixed date formats

**Issue**: Same column has different date formats

**Solution**: Handle multiple formats
```sql
-- Handle multiple date formats
SELECT
  CASE
    WHEN toDateOrNull(date_string) IS NOT NULL THEN toDate(date_string)
    WHEN parseDateTimeBestEffort(date_string) IS NOT NULL
      THEN toDate(parseDateTimeBestEffort(date_string))
    ELSE NULL
  END as parsed_date
FROM events
```

### Invalid date values

**Issue**: Date strings that can't be parsed

**Solution**: Use safe parsing functions
```sql
-- Use safe parsing
SELECT toDateOrNull(date_string) as safe_date
FROM events
WHERE toDateOrNull(date_string) IS NOT NULL
```

## Best practices

1. **Use safe parsing** - Use `toDateOrNull()` instead of `toDate()`
2. **Handle timezones** - Be explicit about timezone handling
3. **Validate dates** - Check date format before parsing
4. **Use consistent formats** - Standardize date formats in data
5. **Handle edge cases** - Account for invalid or missing dates

## Related documentation

- [Date and time functions](/sql-reference/functions/date-time-functions)
- [Data types](/sql-reference/data-types)
- [Common error patterns](/forward/dev-reference/common-error-patterns)
