How to split a date-time column into date and time
- Step 1Export the data with the timestamp column — From your log tool, store, or analytics export, get the CSV containing the combined date-time column (often
Timestamp,Created At,Order Date, orEvent Time). - Step 2Drop the CSV onto the splitter — PapaParse parses it in your browser and lists headers as selectable columns. Your data stays local — nothing is uploaded.
- Step 3Select the timestamp column — Choose the radio button for the combined date-time column. It is replaced in place by the date and time columns; all other columns keep their position.
- Step 4Set the delimiter to match the format — For
2026-06-10 14:30:00use a single space. For ISO2026-06-10T14:30:00use the literalT. The split is a literal string match — type the exact separator. - Step 5Set a prefix and a sensible max-parts — Set
New column prefixtoWhenso columns readWhen_1(date),When_2(time). SetMax parts per rowto2so a value with extra spaces (a timezone name) doesn't add a third column — but check the edge cases first, since extra tokens past the cap are dropped. - Step 6Run, verify, download — Click Split, confirm in the preview that the date and time landed in the right columns, then download
<name>.split.csv. Rename with csv-header-rename toDate/Time, and sort by date with csv-sorter if needed.
Splitter options for date-time columns
The four controls, with values that suit combined timestamps.
| Option | What it does | Recommended for timestamps | Default |
|---|---|---|---|
| Column to split | Picks the single source column; replaced in place | The Timestamp / Created At column | none (must select) |
| Delimiter inside the cell | Literal string the cell is split on (not regex, not a date parser) | A space (or T for ISO) | , |
| New column prefix | Names output columns <prefix>_1, ...; defaults to source name | When (date = _1, time = _2) | source column name |
| Max parts per row | Caps parts kept per row; grid width is widest row up to this cap | 2 for date+time | 100 |
How timestamp formats split
The tool cuts the string at the delimiter without reformatting. Each part is trimmed.
| Input cell | Delimiter | Parts after split |
|---|---|---|
2026-06-10 14:30:00 | space | 2026-06-10 | 14:30:00 |
2026-06-10T14:30:00 | T | 2026-06-10 | 14:30:00 |
2026-06-10 02:30 PM | space | 2026-06-10 | 02:30 | PM |
2026-06-10T14:30:00Z | T | 2026-06-10 | 14:30:00Z |
06/10/2026 14:30 | space | 06/10/2026 | 14:30 |
Free vs Pro limits (CSV family)
Browser-side limits. The splitter is text-only and runs locally.
| Tier | Max rows | Max file size | Batch files |
|---|---|---|---|
| Free | 500 | 2 MB | 2 |
| Pro | 100,000 | 100 MB | 10 |
| Developer | Unlimited | 5 GB | Unlimited |
Cookbook
Real timestamp formats and how the literal split handles them. Values are illustrative.
Space-separated timestamp → Date + Time
ExampleThe common case. Split on a space with max parts = 2 and prefix When. The combined column becomes two columns; the values are not reformatted.
Input: Order ID,Timestamp 1001,2026-06-10 14:30:00 1002,2026-06-11 09:05:12 Config: column = Timestamp, delimiter = " ", prefix = When, maxParts = 2 Output: Order ID,When_1,When_2 1001,2026-06-10,14:30:00 1002,2026-06-11,09:05:12
ISO 8601 timestamp split on T
ExampleISO timestamps join date and time with a literal T. Set the delimiter to T to split there. The timezone suffix (Z or +00:00) stays attached to the time part.
Input: Timestamp 2026-06-10T14:30:00Z 2026-06-11T09:05:12Z Config: delimiter = "T", prefix = When Output: When_1,When_2 2026-06-10,14:30:00Z 2026-06-11,09:05:12Z
AM/PM time adds a third token
ExampleA 12-hour value 02:30 PM has a space before the meridiem, so a space split yields three parts. Use max parts = 2 only if you accept dropping PM (data loss); otherwise leave room for it and recombine.
Input: Timestamp 2026-06-10 02:30 PM Config: delimiter = " " (default maxParts = 100) Output: Timestamp_1,Timestamp_2,Timestamp_3 2026-06-10,02:30,PM
Values are not reformatted or validated
ExampleThe tool is a string splitter, not a date parser. A malformed value is cut at the delimiter as-is; it isn't corrected or rejected. Verify the source format is consistent before relying on the split.
Input: Timestamp 2026-13-99 99:99:99 Config: delimiter = " " Output (split verbatim — not validated): Timestamp_1,Timestamp_2 2026-13-99,99:99:99
Rename and sort after splitting
ExampleSplit first, then relabel and sort. Sorting by the date column groups rows by day for a report.
After split + csv-header-rename (When_1 -> Date, When_2 -> Time): Date,Time 2026-06-11,09:05:12 2026-06-10,14:30:00 Then csv-sorter on Date (ascending): Date,Time 2026-06-10,14:30:00 2026-06-11,09:05:12
Errors and edge cases
Real errors and silent failures sourced from each platform's own documentation. Match the wording to the row, fix what the row says to fix.
Timezone suffix stays with the time
Combined in time partAn ISO value split on T keeps Z or +00:00 attached to the time (14:30:00Z). That's usually fine, but if you need the offset separate, run the splitter again on the time column with the delimiter set to + (won't catch Z) or strip it with csv-find-replace.
AM/PM adds an unexpected third column
Extra column02:30 PM has a space before the meridiem, so a space split produces three parts and widens the grid. Either keep max parts at the default and accept the PM column, or set max parts = 2 — but then PM is dropped (data loss). Check the Max parts seen stat after running.
Date-only rows mixed with full timestamps
Padded with empty cellsIf some rows are 2026-06-10 (no time) and others are 2026-06-10 14:30:00, the date-only rows split into one part and get an empty time cell. That is expected — the grid width matches the widest row.
The tool doesn't reformat or validate dates
No date parsingThis is a literal string splitter, not a date library. It won't convert 06/10/2026 to ISO, won't fix 2026-13-99, and won't reject invalid values — it just cuts at the delimiter. Normalise formats first if your source is inconsistent.
No column selected
Error: Select a column to splitClicking Split without choosing a column throws Select a column to split. Pick the timestamp column's radio button. The button is disabled until a column and a non-empty delimiter are set.
Empty delimiter
Error: Delimiter cannot be emptyThe delimiter field can't be blank — it throws Delimiter cannot be empty. Enter a space for Date Time or T for ISO timestamps.
Empty timestamp cell
Single empty partA blank timestamp becomes one empty part, padded to the file width. The row is kept with empty date/time cells. Filter out blank-timestamp rows afterwards with csv-cleaner if you only want timed events.
Inconsistent separators across rows
Mixed resultsIf some rows use a space and others use T (mixed log sources), one split pass only handles one delimiter — rows using the other separator won't split. Normalise the separator first with csv-find-replace, then split.
File exceeds free 500-row / 2 MB limit
Upgrade requiredFree tier caps at 500 rows / 2 MB. Larger log exports need Pro (100,000 rows / 100 MB), or split into chunks first with csv-row-splitter.
Frequently asked questions
How do I split a date-time column into separate date and time columns?
Drop the CSV onto the splitter, select the timestamp column, set the delimiter to a single space (or T for ISO timestamps), set a prefix like When, and run. You get the date in When_1 and the time in When_2.
Does it reformat the dates (e.g. to ISO)?
No. The tool is a literal string splitter, not a date parser. It cuts the value at the delimiter and leaves both parts exactly as they were — 2026-06-10 stays 2026-06-10, 06/10/2026 stays 06/10/2026.
My timestamps are ISO format with a T. What delimiter do I use?
Set the delimiter to the literal letter T. 2026-06-10T14:30:00 splits into 2026-06-10 and 14:30:00. Any timezone suffix (Z, +00:00) stays attached to the time part.
Why did my AM/PM timestamp produce three columns?
02:30 PM has a space before PM, so a space split makes three parts: date, time, meridiem. Keep max parts at the default to retain the PM column, or set max parts = 2 to drop it (which loses the AM/PM info).
What happens to the timezone offset?
When you split an ISO value on T, the offset stays with the time (14:30:00Z or 14:30:00+00:00). To separate it, strip it with csv-find-replace or split the time column again on +.
Some rows are date-only. Will the columns still line up?
Yes. Date-only rows split into one part and are padded with an empty time cell, so the grid stays rectangular. The width matches the widest (full timestamp) row.
Does it validate or fix invalid dates?
No. It performs no date validation — 2026-13-99 is split verbatim. Normalise and validate your dates in a spreadsheet or BI tool after splitting.
Is my data uploaded?
No. The splitter runs in your browser with PapaParse. Event logs and order data are parsed locally and never sent to a server. Signed-in users have only a processed-count stat recorded.
How do I sort by the new date column?
After splitting and renaming, use csv-sorter on the date column to order rows by day for a report.
How many rows can I process?
Free tier handles 500 rows / 2 MB. Pro raises it to 100,000 rows / 100 MB. For larger log files, chunk first with csv-row-splitter.
I need to recombine date and time into one column. Which tool?
Use csv-column-merger. It joins columns into one with a separator (a space for a timestamp) and names the merged column.
Can I automate timestamp splitting in a pipeline?
Yes. csv-column-splitter is available as a local runner tool (Pro tier). Configure the column, delimiter, prefix, and maxParts, and run it against a file on your machine — processing stays local, so your data never reaches JAD's servers.
Privacy first
Processing runs locally in your browser with PapaParse. No file is uploaded — only metadata counters are saved for signed-in dashboard stats.