DynamoDB Query ISO date

1k Views Asked by At

I'm new to Dynamo and have been trying to query the DB for a range.

enter image description here

I'm doing a query for an ISO date string in my Lambda like this:

  const start = event['queryStringParameters']['startDate'];
  const end = event['queryStringParameters']['endDate'];
  
  let params = {
    TableName: "Parcel",
    KeyConditionExpression: "#trackNo = :trackNo AND #ShipmentDate BETWEEN :start AND :end",
    ExpressionAttributeNames: {
      "#trackNo": "TrackingNumber",
      "#ShipmentDate": "ShipmentDate"
    },
    ExpressionAttributeValues: {
      ":trackNo": "TrackingNumber",
      ":start": start,
      ":end": end
    }

but I am not getting any records in the range...

I've searched this for hours... I cannot figure out how to perform this query.

Example Data:

{
  "Carrier": "FedEx",
  "ShipmentDate": "2019-09-02",
  "TrackingNumber": "TN_2019-09-02"
}

Functioning scan paradigm:

  let params = {
    TableName: "Parcel",
    FilterExpression: "#ShipmentDate BETWEEN :start AND :end",
    ExpressionAttributeNames: {
      "#ShipmentDate": "ShipmentDate"
    },
    ExpressionAttributeValues: {
      ":start": start,
      ":end": end
    }
};

  try {
    const data = await documentClient.scan(params).promise();
    responseBody = JSON.stringify(data);
    
    statusCode = 200;
  } catch (err) {
    responseBody = `Unable to get shipments: ${err}`
    statusCode = 403;
  }
0

There are 0 best solutions below