# mes.fnGetAssetStateEvents

## Description
Returns asset state events with mode and time window overlap information.

## Syntax
  <b>mes.fnGetAssetStateEvents(@assetId, @stateEventStart, @rangeStart, @rangeEnd, @durationSecs, @showChanged, @showDowntimeOnly)</b>  
  <br /><br />
  <b>Parameters:</b><br />
  <li>@assetId (int): Asset Id</li>
  <li>@stateEventStart (datetime): Minimum timestamp for state events</li>
  <li>@rangeStart (datetime): Start of the filter range</li>
  <li>@rangeEnd (datetime): End of the filter range</li>
  <li>@durationSecs (int): Minimum duration in seconds</li>
  <li>@showChanged (bit): Include changed states only</li>
  <li>@showDowntimeOnly (bit): Include downtime states only</li>
  <br />
  <b>Returns:</b><br />
  Returns a table. Columns vary based on query logic.

### Code Example
```sql
-- Retrieve asset state events with filters applied
SELECT *
FROM mes.fnGetAssetStateEvents(
  2076,                             -- @assetId
  '2025-07-01T00:00:00',            -- @stateEventStart
  '2025-07-01T00:00:00',            -- @rangeStart
  '2025-07-30T23:59:59',            -- @rangeEnd
  60,                               -- @durationSecs (minimum 60s)
  0,                                -- @showChanged (false)
  1                                 -- @showDowntimeOnly (true)
);
