ODATA DATE DE LA REQUÊTE
J'ai besoin de renvoyer des enregistrements qui ont une date de 4/4/2013 (par exemple).
Le champ de date dans le service ODATA retourne {DATE: "2013-04-04T17:39:33.663"}
Quelle est la requête censé ressembler?
Jusqu'à présent, j'ai vu trois options pour le faire, mais aucun d'entre eux sont tout droit vers l'avant.
Option: datetime'2013-04-04T12:00': cela nécessite de spécification de temps de
Option deux: mois(DATE) eq 04 jour(DATE) eq 04 année(DATE) eq 2013: c'est gênant
Troisième Option: l'utilisation de l'option une avec " ge " et " le " pour obtenir les dossiers entre 2 dates: c'est aussi de la merde.
Cela devrait être très simple qu'il est en T-SQL.
OriginalL'auteur LastTribunal | 2013-04-24
Vous devez vous connecter pour publier un commentaire.
OData v3 n'a pas un type de données primitif qui est juste
Date
. La propriété que vous avez est unDateTime
ou unDateTimeOffset
, donc, si vous l'utilisez ou pas, il y a un temps partie de la valeur, et si vous voulez vérifier la valeur pour l'égalité, le temps de composants doivent être vérifiés.Si vous êtes sûr que vous n'utilisez jamais le temps de partie (et toujours mis à 00:00), vous pourrait faire la requête suivante:
ce qui implique un temps de 00:00. Mais c'est juste une abréviation. Et vous pourriez avoir des résultats inattendus si certains de vos DateTimes faire du vent avec des portions du temps qui ne sont pas 00:00.
Donc, étant donné que vous voulez juste pour vérifier la date de passage de la valeur, et non pas la pleine égalité, je pense que la deuxième approche que vous mentionnez est la meilleure façon d'aller à ce sujet:
De cette façon, vous êtes vérifier exactement ce que vous voulez dire à la vérification et rien de plus.
Pour ce que ça vaut, je crois, un
Date
type de données est à venir dans OData v4. Ensuite, vous serez en mesure d'utiliser l'égalité de vérifier, sans se soucier de l'heure.OriginalL'auteur Jen S
En outre, je tiens à dire que vous pouvez aussi utiliser LINQPAD pour la génération OData demandes. Vous devriez faire LINQ demande et LINQPAD va générer URI correct. Par exemple:
de l'ev en Événements
où ev.Démarrer >= DateTime.Maintenant.Date
sélectionnez ev
LINQPAD génère Odata URI:
L'ajuster au format correct. Dans mon cas, j'ai supprimer "+01:00".
Aussi, vous pouvez utiliser Visual studio pour obtenir Odata demande.
OriginalL'auteur Ruslan Korkin