Date: Difference between revisions

From MemCP
Jump to navigation Jump to search
No edit summary
(Refresh MemCP documentation: accuracy, operational guidance, performance profile and maintained API reference)
 
Line 1: Line 1:
<!-- Copyright (C) 2026 Carl-Philip Haensch -->
<!-- SPDX-License-Identifier: GPL-3.0-or-later -->
<span id="date"></span>
= Date =
= Date =


The '''Date''' module provides date and time functionality for the SCM programming language. This module includes:
<!-- Generated from MemCP c42e19eba on 2026-08-27; do not edit manually. -->
 
<div class="mw-message-box mw-message-box-notice">Generated from MemCP commit <code>c42e19eba</code> on 27 August 2026. See [[Full SCM API documentation]].</div>
* '''Current time''': Functions to get the current Unix timestamp (now)
* '''Date parsing''': Functions to parse date strings into Unix timestamps (parse_date)


These functions provide essential tools for working with dates and timestamps in SCM programs, enabling time-based operations and date string processing.
The '''Date''' module handles SQL temporal values and Scheme date computations. It includes:


← Back to [[Full SCM API documentation]]
* current date and time values;
* parsing and MySQL-compatible formatting;
* field extraction and truncation;
* interval addition and subtraction;
* differences between dates or timestamps;
* compiler-aware conversion to the declared SQL temporal output type.


Timezone conversion and UTC/session-zone helpers are documented separately under [[Timezone]].


== sql_temporal_output ==
== sql_temporal_output ==
Line 26: Line 34:
=== Returns ===
=== Returns ===


<code>any</code>
* '''value''' (<code>any</code>)


== now ==
== now ==
Line 42: Line 50:
=== Returns ===
=== Returns ===


<code>date</code>
* '''value''' (<code>date</code>)


== nanotime ==
== nanotime ==
Line 58: Line 66:
=== Returns ===
=== Returns ===


<code>int</code>
* '''value''' (<code>int</code>)


== current_date ==
== current_date ==
Line 74: Line 82:
=== Returns ===
=== Returns ===


<code>date</code>
* '''value''' (<code>date</code>)


== parse_date ==
== parse_date ==
Line 90: Line 98:
=== Returns ===
=== Returns ===


<code>date</code>
* '''value''' (<code>date</code>)


== format_date ==
== format_date ==
Line 107: Line 115:
=== Returns ===
=== Returns ===


<code>string</code>
* '''value''' (<code>string</code>)


== extract_date ==
== extract_date ==
Line 124: Line 132:
=== Returns ===
=== Returns ===


<code>int</code>
* '''value''' (<code>int</code>)


== date_add ==
== date_add ==
Line 142: Line 150:
=== Returns ===
=== Returns ===


<code>date</code>
* '''value''' (<code>date</code>)


== date_sub ==
== date_sub ==
Line 160: Line 168:
=== Returns ===
=== Returns ===


<code>date</code>
* '''value''' (<code>date</code>)


== date_trunc_day ==
== date_trunc_day ==
Line 176: Line 184:
=== Returns ===
=== Returns ===


<code>date</code>
* '''value''' (<code>date</code>)


== timestampdiff ==
== timestampdiff ==
Line 194: Line 202:
=== Returns ===
=== Returns ===


<code>int</code>
* '''value''' (<code>int</code>)


== datediff ==
== datediff ==
Line 211: Line 219:
=== Returns ===
=== Returns ===


<code>int</code>
* '''value''' (<code>int</code>)


== str_to_date ==
== str_to_date ==
Line 228: Line 236:
=== Returns ===
=== Returns ===


<code>date</code>
* '''value''' (<code>date</code>)

Latest revision as of 11:59, 28 August 2026


Date

Generated from MemCP commit c42e19eba on 27 August 2026. See Full SCM API documentation.

The Date module handles SQL temporal values and Scheme date computations. It includes:

  • current date and time values;
  • parsing and MySQL-compatible formatting;
  • field extraction and truncation;
  • interval addition and subtraction;
  • differences between dates or timestamps;
  • compiler-aware conversion to the declared SQL temporal output type.

Timezone conversion and UTC/session-zone helpers are documented separately under Timezone.

sql_temporal_output

formats a temporal SQL result according to its compiler-tracked declared type

Allowed number of parameters: 2–2

Parameters

  • value (any): type-flexible temporal value
  • sql_type (string): declared SQL temporal type

Returns

  • value (any)

now

returns the current date/time

Allowed number of parameters: 0–0

Parameters

This function has no parameters.

Returns

  • value (date)

nanotime

returns a monotonic nanosecond timestamp for benchmarking (not wall-clock)

Allowed number of parameters: 0–0

Parameters

This function has no parameters.

Returns

  • value (int)

current_date

returns the current date (midnight in session timezone)

Allowed number of parameters: 0–0

Parameters

This function has no parameters.

Returns

  • value (date)

parse_date

parses a date from a string

Allowed number of parameters: 1–1

Parameters

  • value (string): values to parse

Returns

  • value (date)

format_date

formats a unix timestamp, date, or datetime string into a date string

Allowed number of parameters: 2–2

Parameters

  • timestamp (any): unix timestamp, date, or datetime string
  • format (string): MySQL-style format string (e.g. %Y-%m-%d %H:%i:%s)

Returns

  • value (string)

extract_date

extracts a date field (YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, QUARTER, WEEK, DAYOFWEEK, WEEKDAY) from a date value

Allowed number of parameters: 2–2

Parameters

  • value (any): date value
  • field (string): field name: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, QUARTER, WEEK, DAYOFWEEK, WEEKDAY

Returns

  • value (int)

date_add

adds an interval to a date value

Allowed number of parameters: 3–3

Parameters

  • value (any): date value
  • amount (int): interval amount
  • unit (string): interval unit: DAY, WEEK, MONTH, YEAR, HOUR, MINUTE, SECOND

Returns

  • value (date)

date_sub

subtracts an interval from a date value

Allowed number of parameters: 3–3

Parameters

  • value (any): date value
  • amount (int): interval amount
  • unit (string): interval unit: DAY, WEEK, MONTH, YEAR, HOUR, MINUTE, SECOND

Returns

  • value (date)

date_trunc_day

truncates a datetime to date (midnight UTC)

Allowed number of parameters: 1–1

Parameters

  • value (any): date/datetime value

Returns

  • value (date)

timestampdiff

returns the difference between two datetimes in the given unit

Allowed number of parameters: 3–3

Parameters

  • unit (string): SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR
  • dt1 (any): first datetime
  • dt2 (any): second datetime

Returns

  • value (int)

datediff

returns number of days between two dates (date1 - date2)

Allowed number of parameters: 2–2

Parameters

  • date1 (any): first date
  • date2 (any): second date

Returns

  • value (int)

str_to_date

parses a string with MySQL format specifiers to a date

Allowed number of parameters: 2–2

Parameters

  • value (string): date string
  • format (string): MySQL format string (e.g. %Y-%m-%d)

Returns

  • value (date)