---
title: Datetime now
description: Under most Painless contexts the current datetime, now, is not supported. There are two primary reasons for this. The first is that scripts are often...
url: https://www.elastic.co/docs/reference/scripting-languages/painless/painless-datetime-now
products:
  - Elasticsearch
  - Painless
applies_to:
  - Elastic Cloud Serverless: Generally available
  - Elastic Stack: Generally available
---

# Datetime now
Under most Painless contexts the current datetime, `now`, is not supported. There are two primary reasons for this. The first is that scripts are often run once per document, so each time the script is run a different `now` is returned. The second is that scripts are often run in a distributed fashion without a way to appropriately synchronize `now`. Instead, pass in a user-defined parameter with either a string datetime or numeric datetime for `now`. A numeric datetime is preferred as there is no need to parse it for comparison.

## Datetime now examples

- Use a numeric datetime as `now`
  - Assumptions:
  - The field `input_datetime` exists in all indexes as part of the query
- All indexed documents contain the field `input_datetime`
- Mappings:
  ```JSON
  {
    "mappings": {
        ...
        "properties": {
          ...
          "input_datetime": {
          "type": "date"
        }
        ...
      }
      ...
    }
  }
  ```
  
- Input:
  ```JSON
  ...
  "script": {
      ...
      "params": {
          "now": <generated numeric datetime in milliseconds since epoch>
      }
  }
  ...
  ```
  
- Script:
  ```java
  long now = params['now'];
  ZonedDateTime inputDateTime = doc['input_datetime'];
  long millisDateTime = inputDateTime.toInstant().toEpochMilli();
  long elapsedTime = now - millisDateTime;
  ```
  
- Use a string datetime as `now`
  - Assumptions:
  - The field `input_datetime` exists in all indexes as part of the query
- All indexed documents contain the field `input_datetime`
- Mappings:
  ```JSON
  {
    "mappings": {
      ...
      "properties": {
        ...
        "input_datetime": {
          "type": "date"
        }
        ...
      }
      ...
    }
  }
  ```
  
- Input:
  ```JSON
  ...
  "script": {
      ...
      "params": {
          "now": "<generated string datetime in ISO-8601>"
      }
  }
  ...
  ```
  
- Script:
  ```java
  String nowString = params['now'];
  ZonedDateTime nowZdt = ZonedDateTime.parse(nowString); 
  long now = ZonedDateTime.toInstant().toEpochMilli();
  ZonedDateTime inputDateTime = doc['input_datetime'];
  long millisDateTime = zdt.toInstant().toEpochMilli();
  long elapsedTime = now - millisDateTime;
  ```