Meridianmeridian

SQL Timestamp with Milliseconds

datetime.timestamp.sql_milliseconds

Space-separated date and time with 3-digit millisecond precision. MySQL DATETIME(3), Java Timestamp.toString() output. DuckDB uses %g specifier for 3-digit milliseconds.

Domain
datetime
Category
timestamp
Casts to
TIMESTAMP
Scope
Universal

Try it

CLI
$ finetype infer -i "2024-01-15 14:30:00.123"
→ datetime.timestamp.sql_milliseconds

DuckDB

Detect
SELECT finetype('2024-01-15 14:30:00.123');
-- → 'datetime.timestamp.sql_milliseconds'
Cast expression
strptime({col}, '%Y-%m-%d %H:%M:%S.%g')
-- Format: %Y-%m-%d %H:%M:%S.%g
Safe cast pipeline
-- Normalise and cast in one step
SELECT TRY_CAST(finetype_cast(my_column) AS TIMESTAMP) AS clean_value
FROM my_table
WHERE finetype(my_column) = 'datetime.timestamp.sql_milliseconds';

JSON Schema

finetype schema datetime.timestamp.sql_milliseconds
{
  "$id": "https://meridian.online/schemas/datetime.timestamp.sql_milliseconds",
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "description": "Space-separated date and time with 3-digit millisecond precision. MySQL DATETIME(3), Java Timestamp.toString() output. DuckDB uses %g specifier for 3-digit milliseconds.",
  "examples": [
    "2024-01-15 14: 30: 00.123",
    "2019-12-31 23: 59: 59.000",
    "2023-06-01 08: 15: 30.789"
  ],
  "maxLength": 23,
  "minLength": 23,
  "pattern": "^\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}\\.\\d{3}$",
  "title": "SQL Timestamp with Milliseconds",
  "type": "string",
  "x-finetype-broad-type": "TIMESTAMP",
  "x-finetype-format-string": "%Y-%m-%d %H:%M:%S.%g",
  "x-finetype-transform": "strptime({col}, '%Y-%m-%d %H:%M:%S.%g')"
}

Examples

2024-01-15 14:30:00.1232019-12-31 23:59:59.0002023-06-01 08:15:30.789

Aliases

sql_millis