# Duration

SurrealDB duration values map to Java's Duration class.

SurrealDB [`duration`](/docs/reference/query-language/language-primitives/data-types/datetimes.md#durations-and-datetimes) values map to Java's `java.time.Duration`. The SDK handles conversion automatically when deserialising query results into [`Value`](/docs/reference/java/api/values/value.md) objects or POJOs.

---

## Value methods

### `.isDuration()` {#is-duration}

Checks if the value is a duration.

```java title="Method Syntax"
value.isDuration()
```

**Returns:** `boolean`

### `.getDuration()` {#get-duration}

Returns the duration as a `java.time.Duration`.

```java title="Method Syntax"
value.getDuration()
```

**Returns:** `java.time.Duration`

---

## POJO mapping

When using typed methods, duration fields in your POJO should be declared as `Duration`.

```java
import java.time.Duration;

public class Task {
    public RecordId id;
    public String name;
    public Duration timeout;

    public Task() {}
}

Optional<Task> task = db.select(Task.class, new RecordId("task", "build"));
Duration timeout = task.get().timeout;
```

---

## Example

```java title="Working with duration values"
import com.surrealdb.Surreal;
import com.surrealdb.Response;
import com.surrealdb.Value;
import com.surrealdb.signin.RootCredential;
import java.time.Duration;

try (Surreal db = new Surreal()) {
    db.connect("ws://localhost:8000");
    db.useNs("surrealdb").useDb("docs");
    db.signin(new RootCredential("root", "root"));

    Response response = db.query("RETURN 1h30m");
    Value result = response.take(0);

    if (result.isDuration()) {
        Duration d = result.getDuration();
    }
}
```

---

## See also

- [Value types](/docs/reference/java/concepts/value-types.md) - Type mapping overview
- [Value](/docs/reference/java/api/values/value.md) - The Value class reference
- [SurrealQL durations](/docs/reference/query-language/language-primitives/data-types/datetimes.md#durations-and-datetimes) - Duration types in SurrealDB
