-->
You don't need to strip the time off to filter by a date, just add 1 to the end date so that the time of the end date is included. Between Enter a Start Date And DateAdd ('d',1, Enter an End Date) Jack Stockton. Microsoft Access MVP 2012 - 2017. 1 person found this reply helpful. Contain today's date. Date Returns items with a date of today. If today's date is 2/2/2012, you’ll see items where the date field is set to Feb 2, 2012. Contain yesterday's date. Returns items with yesterday’s date. If today's date is 2/2/2012, you’ll see items for Feb 1, 2012. Contain tomorrow's date. With the query open in Design view, on the Design tab, in the Show/Hide group, click Parameters. In the Query Parameters dialog box, in the Parameter column, type the prompt for each parameter for which you want to specify the data type. Make sure that each parameter matches the prompt that you use in the Criteria row of the query design grid. Data type: Select 'Date/Time' from the dropdown list. Select parameter visibility: Visible. Enter the following on the 'Default Values' tab: Select Get values from a query. Dataset = DateRange. Value field = Choose the Start Date from of the date range from the dropdown list. SELECT CUSTOMER.regNum, CUSTOMER.companyName, ScrapTireType.description, ScrapTireType.PTEamount, ScrapCollectionTireType.amount, ScrapCollection.PTEtotal, ScrapCollection.Date FROM (ScrapCollection INNER JOIN CUSTOMER ON ScrapCollection.regNum = CUSTOMER.regNum) INNER JOIN (ScrapTireType INNER JOIN ScrapCollectionTireType ON (ScrapTireType.scrapTireTypeID = ScrapCollectionTireType.scrapTireTypeID) AND (ScrapTireType.scrapTireTypeID = ScrapCollectionTireType.scrapTireTypeID)) ON.
Microsoft Graph supports optional query parameters that you can use to specify and control the amount of data returned in a response. The support for the exact query parameters varies from one API operation to another, and depending on the API, can differ between the v1.0 and beta endpoints.
Tip
On the beta endpoint, the $
prefix is optional. For example, instead of $filter
, you can use filter
.On the v1 endpoint, the $
prefix is optional for only a subset of APIs. For simplicity, always include $
if using the v1 endpoint.
Query parameters can be OData system query options or other query parameters.
Microsoft Query Wizard Excel
OData system query options
A Microsoft Graph API operation might support one or more of the following OData system query options. These query options are compatible with the OData V4 query language.
Note: OData 4.0 supports system query options in only GET operations.
Click the examples to try them in Graph Explorer.
Name | Description | Example |
---|---|---|
$count | Retrieves the total count of matching resources. | /me/messages?$top=2&$count=true |
$expand | Retrieves related resources. | /groups?$expand=members |
$filter | Filters results (rows). | /users?$filter=startswith(givenName,'J') |
$format | Returns the results in the specified media format. | /users?$format=json |
$orderby | Orders results. | /users?$orderby=displayName desc |
$search | Returns results based on search criteria. | /me/messages?$search=pizza |
$select | Filters properties (columns). | /users?$select=givenName,surname |
$skip | Indexes into a result set. Also used by some APIs to implement paging and can be used together with $top to manually page results. | /me/messages?$skip=11 |
$top | Sets the page size of results. | /users?$top=2 |
Other query parameters
Name | Description | Example |
---|---|---|
$skipToken | Retrieves the next page of results from result sets that span multiple pages. (Some APIs use $skip instead.) | /users?$skiptoken=X%274453707402000100000017.. |
Other OData URL capabilities
The following OData 4.0 capabilities are URL segments, not query parameters.
Name | Description | Example |
---|---|---|
$ref | Updates entities membership to a collection. | POST /groups/{id}/members/$ref |
$value | Retrieves or updates the binary value of an item. | GET /me/photo/$value |
Encoding query parameters
The values of query parameters should be percent-encoded. Many HTTP clients, browsers, and tools (such as the Graph Explorer) will help you with this. If a query is failing, one possible cause is failure to encode the query parameter values appropriately.
An unencoded URL looks like this:
A properly encoded URL looks like this:
Escaping single quotes
For requests that use single quotes, if any parameter values also contain single quotes, those must be double escaped; otherwise, the request will fail due to invalid syntax. In the example, the string value let's meet for lunch?
has the single quote escaped.
count parameter
Use the $count
query parameter to include a count of the total number of items in a collection alongside the page of data values returned from Microsoft Graph.
For example, the following request returns both the contact collection of the current user, and the number of items in the contact collection in the @odata.count
property.
The $count
query parameter is supported for these collections of resources and their relationships that derive from directoryObject:
- users.
expand parameter
Many Microsoft Graph resources expose both declared properties of the resource as well as its relationships with other resources. These relationships are also called reference properties or navigation properties, and they can reference either a single resource or a collection of resources. For example, the mail folders, manager, and direct reports of a user are all exposed as relationships.
Normally, you can query either the properties of a resource or one of its relationships in a single request, but not both. You can use the $expand
query string parameter to include the expanded resource or collection referenced by a single relationship (navigation property) in your results.
The following example gets root drive information along with the top-level child items in a drive:
With some resource collections, you can also specify the properties to be returned in the expanded resources by adding a $select
parameter. The following example performs the same query as the previous example but uses a $select
statement to limit the properties returned for the expanded child items to the id and name properties.
Note: Not all relationships and resources support the $expand
query parameter. For example, you can expand the directReports, manager, and memberOf relationships on a user, but you cannot expand its events, messages, or photo relationships. Not all resources or relationships support using $select
on expanded items.
With Azure AD resources that derive from directoryObject, like user and group, $expand
is only supported for beta
and typically returns a maximum of 20 items for the expanded relationship.
filter parameter
Use the $filter
query parameter to retrieve just a subset of a collection. The $filter
query parameter can also be used to retrieve relationships like members, memberOf, transitiveMembers, and transitiveMemberOf. For example, get all the security groups I'm a member of.
The following example can be used to find users whose display name starts with the letter 'J', use startsWith
.
Support for $filter
operators varies across Microsoft Graph APIs. The following logical operators are generally supported:
- equals
eq
/ not equalsne
- less than
lt
/ greater thangt
- less than or equal to
le
/ greater than or equal toge
- and
and
/ oror
- in
in
- Negation
not
- lambda operator any
any
- lambda operator all
all
- Starts with
startsWith
- Ends with
endsWith
Note: Support for these operators varies by entity. See the specific entity documentation for details.
The contains
string operator is currently not supported on any Microsoft Graph resources.
For some usage examples, see the following table. For more details about $filter
syntax, see the OData protocol.
The following table shows some examples that use the $filter
query parameter.
Note: Click the examples to try them in Graph Explorer.
Description | Example |
---|---|
Get all users with the name Mary across multiple properties. | https://graph.microsoft.com/v1.0/users?$filter=startswith(displayName,'mary') or startswith(givenName,'mary') or startswith(surname,'mary') or startswith(mail,'mary') or startswith(userPrincipalName,'mary') |
Get all users with mail domain equal to 'hotmail.com' | https://graph.microsoft.com/v1.0/users?$count=true&$filter=endsWith(mail,'@hotmail.com') |
Get all the signed-in user's events that start after 7/1/2017. | https://graph.microsoft.com/v1.0/me/events?$filter=start/dateTime ge '2017-07-01T08:00' |
Get all emails from a specific address received by the signed-in user. | https://graph.microsoft.com/v1.0/me/messages?$filter=from/emailAddress/address eq 'someuser@example.com' |
Get all emails received by the signed-in user in April 2017. | https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messages?$filter=ReceivedDateTime ge 2017-04-01 and receivedDateTime lt 2017-05-01 |
Get all unread mail in the signed-in user's Inbox. | https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messages?$filter=isRead eq false |
List all Microsoft 365 groups in an organization. | https://graph.microsoft.com/v1.0/groups?$filter=groupTypes/any(c:c+eq+'Unified') |
Use OData cast to get transitive membership in groups with a display name that starts with 'a' including a count of returned objects. | https://graph.microsoft.com/beta/me/transitiveMemberOf/microsoft.graph.group?$count=true&$filter=startswith(displayName, 'a') |
format parameter
Use the $format
query parameter to specify the media format of the items returned from Microsoft Graph.
For example, the following request returns the users in the organization in the json format:
Note: The $format
query parameter supports a number of formats (for example, atom, xml, and json) but results may not be returned in all formats.
orderby parameter
Use the $orderby
query parameter to specify the sort order of the items returned from Microsoft Graph.
Date Parameters In Microsoft Query Wizard Download
For example, the following request returns the users in the organization ordered by their display name:
You can also sort by complex type entities. The following request gets messages and sorts them by the address field of the from property, which is of the complex type emailAddress:
To sort the results in ascending or descending order, append either asc
or desc
to the field name, separated by a space; for example, ?$orderby=name%20desc
.
With some APIs, you can order results on multiple properties. For example, the following request orders the messages in the user's Inbox, first by the name of the person who sent it in descending order (Z to A), and then by subject in ascending order (default).
Note: When you specify $filter the server will infer a sort order for the results. If you use both $orderby
and $filter
to get messages, because the server always infersa sort order for the results of a $filter
, you must specify properties in certain ways.
The following example shows a query filtered by the subject and importance properties, and then sorted by the subject, importance, andreceivedDateTime properties in descending order.
Note: Combining $orderby
and $filter
query parameters is supported on the beta endpoint for the following AD resources and their relationships that derive from directoryObject:
To use $orderby
and $filter
together, you need to:
- Add
$count=true
to the query parameters - Add
ConsistencyLevel: eventual
request header
See optional user query parameters for more information.
search parameter
Use the $search
query parameter to restrict the results of a request to match a search criterion.
Using $search on message collections
You can search messages based on a value in specific message properties. The results of the search are sorted by the date and time that the message was sent. A $search
request returns up to 250 results.
If you do a search on messages and specify only a value without specific message properties, the search is carried out on the default search properties of from, subject, and body.
The following example returns all messages in the signed-in user's Inbox that contains 'pizza' in any of the three default search properties:
Alternatively, you can search messages by specifying message property names in the following table, that are recognized by the Keyword Query Language (KQL) syntax. These property names correspond to properties defined in the message entity of Microsoft Graph. Outlook and other Microsoft 365 applications such as SharePoint support KQL syntax, providing the convenience of a common discovery domain for their data stores.
Searchable email property | Description | Example |
---|---|---|
attachment | The names of files attached to an email message. | me/messages?$search='attachment:api-catalog.md' |
bcc | The bcc field of an email message, specified as an SMTP address, display name, or alias. | me/messages?$search='bcc:samanthab@contoso.com'&$select=subject,bccRecipients |
body | The body of an email message. | me/messages?$search='body:excitement' |
cc | The cc field of an email message, specified as an SMTP address, display name, or alias. | me/messages?$search='cc:danas'&$select=subject,ccRecipients |
from | The sender of an email message, specified as an SMTP address, display name, or alias. | me/messages?$search='from:randiw'&$select=subject,from |
hasAttachment | True if an email message contains an attachment that is not an inline attachment, false otherwise. | me/messages?$search='hasAttachments:true' |
importance | The importance of an email message, which a sender can specify when sending a message. The possible values are low , medium , or high . | me/messages?$search='importance:high'&$select=subject,importance |
kind | The type of message. The possible values are contacts , docs , email , faxes , im , journals , meetings , notes , posts , rssfeeds , tasks , or voicemail . | me/messages?$search='kind:voicemail' |
participants | The from, to, cc, and bcc fields of an email message, specified as an SMTP address, display name, or alias. | me/messages?$search='participants:danas' |
received | The date that an email message was received by a recipient. | me/messages?$search='received:07/23/2018'&$select=subject,receivedDateTime |
recipients | The to, cc, and bcc fields of an email meesage, specified as an SMTP address, display name, or alias. | me/messages?$search='recipients:randiq'&$select=subject,toRecipients,ccRecipients,bccRecipients |
sent | The date that an email message was sent by the sender. | me/messages?$search='sent:07/23/2018'&$select=subject,sentDateTime |
size | The size of an item in bytes. | me/messages?$search='size:1.500000' |
subject | The text in the subject line of an email message. . | me/messages?$search='subject:has'&$select=subject |
to | The to field of an email message, specified as an SMTP address, display name, or alias. | me/messages?$search='to:randiw'&$select=subject,toRecipients |
For more information about searchable email properties, KQL syntax, supported operators, and tips on searching, see the following articles:
Searchable properties in Exchange.
Using $search on person collections
You can use the Microsoft Graph People API to retrieve the people who are most relevant to a user. Relevance is determined by the user’s communication and collaboration patterns and business relationships. The People API supports the $search
query parameter. A $search
request returns up to 250 results.
Searches on people occur on both the displayName and emailAddress properties of the person resource.
The following request does a search for a person named 'Irene McGowen' in the displayName and emailAddress properties in each person in the people collection of the signed-in user. Because a person named 'Irene McGowan' is relevant to the signed-in user, the information for 'Irene McGowan' is returned.
The following example shows the response.
To learn more about the People API, see Get information about relevant people.
Using $search on directory object collections
You can use a $search
query parameter to filter results using tokenization. Tokenized search works by extracting words from your input and output string, using spaces, numbers, different casing, and symbols to separate the words, as follow:
- Spaces:
hello world
=>hello
,world
- Different casing⁽¹⁾:
HelloWorld
orhelloWORLD
=>hello
,world
- Symbols⁽²⁾:
hello.world
=>hello
,.
,world
,helloworld
- Numbers:
hello123world
=>hello
,123
,world
⁽¹⁾ Currently, tokenization only works when the casing is changing from lowercase to uppercase, so HELLOworld
is considered a single token: helloworld
, and HelloWORld
is two tokens: hello
, world
.⁽²⁾ Tokenization logic also combines words that are separated only by symbols; for example, searching for helloworld
will find hello-world
and hello.world
.
Note: after tokenization, the tokens are matched independently of the original casing, and they are matched in any order.$search
query parameter on directory objects collections requires a special request header: ConsistencyLevel: eventual
.
The tokenized search support works only on the displayName and description fields. Any field can be put in $search
; fields other than displayName and description default to $filter
startswith behavior. For example:
https://graph.microsoft.com/beta/groups/?$search='displayName:OneVideo'
This looks for all groups with display names that look like 'OneVideo'. $search
can be used together with $filter
as well. For example:
https://graph.microsoft.com/beta/groups/?$filter=mailEnabled eq true&$search='displayName:OneVideo'
This looks for all mail-enabled groups with display names that look like 'OneVideo'. The results are restricted based on a logical conjunction (an 'AND') of the $filter
and the entire query in the $search
. The search text is tokenized based on casing, but matches are performed in a case-insensitive manner. For example, 'OneVideo' would be split into two input tokens 'one' and 'video', but matches properties insensitive to case.
The syntax of search follows these rules:
- Generic format: $search='clause1' [AND | OR] '[clauseX]'.
- Any number of clauses is supported. Parentheses for precedence is also supported.
- The syntax for each clause is: '<property>:<text to search>'.
- The property name must be specified in clause. Any property that can be used in
$filter
can also be used inside$search
. Depending on the property, the search behavior is either 'search' or 'startswith' if search is not supported on the property. - The whole clause part must be put inside double quotes.
- Logical operator 'AND' 'OR' must be put outside double quotes. They must be in upper case.
- Given that the whole clause part needs to be put inside double quotes, if it contains double quote and backslash, it needs to be escaped with a backslash. No other characters need to be escaped.
The following table shows some examples.
Object class | Description | Example |
---|---|---|
User | Address book display name of the user. | https://graph.microsoft.com/beta/users?$search='displayName:Guthr' |
User | Address book display name or mail of the user. | https://graph.microsoft.com/beta/users?$search='displayName:Guthr' OR 'mail:Guthr' |
Group | Address book display name or description of the group. | https://graph.microsoft.com/beta/groups?$search='description:One' AND ('displayName:Video' OR 'displayName:Drive') |
Group | Address book display name on a mail-enabled group. | https://graph.microsoft.com/beta/groups?$filter=mailEnabled eq true&$search='displayName:OneVideo' |
Both the string inputs you provide in $search
, as well as the searchable properties, are split up into parts by spaces, different casing, and character types (numbers and special characters).
select parameter
Use the $select
query parameter to return a set of properties that are different than the default set for an individual resource or a collection of resources. With $select, you can specify a subset or a superset of the default properties.
For example, when retrieving the messages of the signed-in user, you can specify that only the from and subject properties be returned:
Important: In general, we recommend that you use $select
to limit the properties returned by a query to those needed by your app. This is especially true of queries that might potentially return a large result set. Limiting the properties returned in each row will reduce network load and help improve your app's performance.
In v1.0
, some Azure AD resources that derive from directoryObject, like user and group, return a limited, default subset of properties on reads. For these resources, you must use $select
to return properties outside of the default set.
skip parameter
Use the $skip
query parameter to set the number of items to skip at the start of a collection.For example, the following request returns events for the user sorted by date created, starting with the 21st event in the collection:
Note: Some Microsoft Graph APIs, like Outlook Mail and Calendars (message, event, and calendar), use $skip
to implement paging. When results of a query span multiple pages, these APIs will return an @odata:nextLink
property with a URL that contains a $skip
parameter. You can use this URL to return the next page of results. To learn more, see Paging.
skipToken parameter
Some requests return multiple pages of data, either due to server-side paging or due to the use of the $top
parameter to limit the page size of the response. Many Microsoft Graph APIs use the skipToken
query parameter to reference subsequent pages of the result.
The $skiptoken
parameter contains an opaque token that references the next page of results and is returned in the URL provided in the @odata.nextLink
property in the response. To learn more, see Paging.
Note: if you're using OData Count (adding $count=true
in the querystring), the @odata.count
property will be present only in the first page.
top parameter
Use the $top
query parameter to specify the page size of the result set.
If more items remain in the result set, the response body will contain an @odata.nextLink
parameter. This parameter contains a URL that you can use to get the next page of results. To learn more, see Paging.
$top accepts a minimum value of 1 and a maximum value of 999 (inclusive).
For example, the following request returns the first five messages in the user's mailbox:
Error handling for query parameters
Some requests will return an error message if a specified query parameter is not supported. For example, you cannot use $expand
on the user/photo
relationship.
However, it is important to note that query parameters specified in a request might fail silently. This can be true for unsupported query parameters as well as for unsupported combinations of query parameters. In these cases, you should examine the data returned by the request to determine whether the query parameters you specified had the desired effect.
See also
On my Contextures website, the focus in on Excel tips and tutorials. Behind the scenes, I use Microsoft Access too, for time tracking, website statistics and a few other key tasks. This week, I wanted to find files that hadn’t been updated for a long time, so I created a query that selects records older than X – Access asks what X is each time the query runs. Here’s what I built, and a few other Access query date criteria examples. Microsoft date and time picker control 6.0 sp6.
Access Query With Simple Date Criteria
If there is a date field in a table, it’s easy to build a simple query that selects record before or after a specific date. For example, use this criterion in the date field, to select records that were revised on or before January 1, 2017.
<= 1/1/2017
Access automatically puts number signs before and after the date, when you press Enter, or click away from the criteria cell
<= #1/1/2017#
Access Query Criteria for Specific Date Range
To select records within a specific date range, with two dates with the AND operator, in the query criteria. Here’s the criteria string that selects records from January 1, 2017 to May 31, 2017 (including those dates).
Between #1/1/2017# And #5/31/2017#
Query With Changeable Dates
Just like an Excel date formula, it’s usually better to have a variable in an Access query, instead of hard coding a specific date. In Excel, a formula could refer to a worksheet cell, and a date could be entered there, and changed easily.
In Access, you could have a text box on a form, and enter a date there. Then, refer to that text box in the Access query date criteria.
Here is a form where I can enter the start and end dates, and then run a series of reports based on those dates. It’s easy to change the dates before running the reports, and very efficient for doing month end summaries.
In the queries that the reports are based on, the date criteria refer to those text boxes.
Between [forms]![Menu].[txtStart] And [forms]![Menu].[txtEnd]
Query With Empty Date Boxes
[Update] In the comments, someone asked how to show all the data, if the date text boxes are left empty.
To do that, add 2 more fields in your query, with the text box names in them.
- [forms]![Menu].[txtStart]
- [forms]![Menu].[txtEnd]
Access automatically adds a name for each field – Expr1 and Expr2
Then, in the 2nd Criteria Row (OR), type Is Null in each of the new columns.
- Don’t put the new criteria in the same row as the existing criteria, or you won’t get any results when you run the query.
Query With Prompt for Dates
If you’re not running a series of reports from an Access form, it’s easier to use parameters in your query criteria. The parameters will prompt you to enter the start and end dates, or other criteria that you want to have as variables. Honda stepwgn manual.
So, to select old records with a query, I can put a parameter in my original query, replacing the date. The Parameter is enclosed in square brackets.
<= [Before what date?]
When the query runs, the parameter will appear in a pop up message. Type a date in the input box, and click OK, to see the results.
More Access Query Date Criteria Examples
If you don’t want to enter the entire date (that can get tiring!), use a parameter as part of a date. In the next example, the DateSerial function is used in the criteria, and the parameter prompts you for the year.
The month (1) and day (1) are hard coded – the query will select everything before January 1st of the year that you enter.
<DateSerial([Before what year?],1,1)
How Many Years Old?
Maybe you would rather focus on the record age, instead of a specific year. In this example, I used the DateAdd function, with year as the interval, then a minus sign, and a prompt for how old the files should be. The Date function at the end will base the calculation on the current date.
<=DateAdd(“yyyy”,-[How many years old?],Date())
When you run the query, enter a number in the input box, and the query will select records that are on or before that date – X years before the current date.
__________________
Save