# Full Month Year

Key: `datetime.date.month_year_full`

Full month name followed by 4-digit year. No day component. Financial reports, government statistical publications.

Page: <https://meridian.online/docs/finetype/types/datetime/date/month_year_full>

Format: `%B %Y`

Samples: `January 2024`, `December 2023`, `June 2000`

## Use it

Shell

```shell
finetype infer -i 'January 2024' --mode column
# → datetime.date.month_year_full
```

DuckDB

```sql
SELECT ft_infer('January 2024');
-- → 'datetime.date.month_year_full'
```

Cast template: {col} is your column

```sql
strptime('01 ' || {col}, '%d %B %Y')::DATE
-- Format: %B %Y
```

## Background

### Origin

POSIX.1-2024 defines %B as being replaced by the locale's full month name.[[1]](https://pubs.opengroup.org/onlinepubs/9799919799/functions/strftime.html) The POSIX.1-2024 rationale notes that %Y was frequently assumed to be a four-digit year, although the ISO C standard does not restrict it that way.[[1]](https://pubs.opengroup.org/onlinepubs/9799919799/functions/strftime.html)

The Grammarphobia Blog advises that no comma is needed when only the month and year are given, as in March 2009.[[2]](https://www.grammarphobia.com/blog/2012/06/dating-service.html)

### Use

A month-and-year value names a whole calendar month, not a day, so treat it as a period rather than a date that happens to lack its day. (Meridian's view) Because the month name follows the locale, check which language a file was written in before you parse it, and fix the parsing locale rather than trusting the machine's default. (Meridian's view) DuckDB's date format functions list %B as the full month name, with examples January, February, ….[[3]](https://duckdb.org/docs/current/sql/functions/dateformat)

Python's time.strptime fills missing data with the default values (1900, 1, 1, 0, 0, 0, 0, 1, -1) when more accurate values cannot be inferred.[[4]](https://docs.python.org/3/library/time.html) A parser that silently supplies the first of the month is convenient, but record that the day was invented, so nobody later reads 2024-01-01 as an event on New Year's Day. (Meridian's view) ISO 8601 allows a calendar date to be written with reduced precision, so that 2004-05 indicates May 2004.[[5]](https://en.wikipedia.org/wiki/ISO_8601) The Wikipedia article on ISO 8601 notes that a reduced-precision value such as 2004-05 will never represent the 5th day of an unspecified month in 2004.[[5]](https://en.wikipedia.org/wiki/ISO_8601) When you store the value, consider the reduced-precision ISO form YYYY-MM, which keeps the month without inventing a day. (Meridian's view)

### Where you'll meet it

The Census Bureau's text file of combined seasonal, trading-day and holiday adjustment factors for retail sales labels its monthly columns in a shorter form, such as Jul 25 and Aug 25.[[6]](https://www.census.gov/retail/mrts/www/nadjusts.txt) A publisher may write the full form in its releases and a shorter form in its data files, so map both to the same month before joining them. (Meridian's view)

## Sources

1. [strftime](https://pubs.opengroup.org/onlinepubs/9799919799/functions/strftime.html) — standard
2. [The Grammarphobia Blog: Dating service](https://www.grammarphobia.com/blog/2012/06/dating-service.html) — secondary source
3. [Date Format Functions – DuckDB](https://duckdb.org/docs/current/sql/functions/dateformat) — documentation
4. [time — Time access and conversions — Python 3.15.0 documentation](https://docs.python.org/3/library/time.html) — documentation
5. [ISO 8601 - Wikipedia](https://en.wikipedia.org/wiki/ISO_8601) — secondary source
6. [Combined Seasonal, Trading-Day, and Holiday Adjustment Factors for U.S. Retail Sales and Food Services by Kind of Business](https://www.census.gov/retail/mrts/www/nadjusts.txt) — dataset

## How it's detected

Financial reports, gov statistics.
