2017-05-05 4 views
0

J'insère des données dans une table sur un serveur SQL différent, à cette fin j'ai créé un paquet dtsx, Nous avons besoin de données dans la table de destination au format jj-mm-aaaa et je me sers ci-dessous pour convertir la requête date dans le format souhaité
La date ne s'introduit pas dans le tableau au format défini

Convert(varchar,dbo.Member.DateOfBirth,105) 

quand exécuter la requête dans SSMS, il fournit des données parfaitement converties comme '25 -08-1989' mais quand je vérifie dans la table de destination après l'insertion , il montre la date que '1989-08-25'
Quelqu'un peut-il me dire pourquoi la table de destination n'accepte pas la date au format jj-mm-aaaa après conve rsion?
Je suis nouveau ici, désolé pour les erreurs de mise en forme ....

+1

Vous ne stockez pas les dates dans certains formats dans la base de données (et s'il vous plaît, pas de champs varchar). Vous les stockez dans un type de données approprié (date, datetime2, etc.) et effectuez le formatage dans le frontend. –

+0

@means formatage ne fonctionnera pas lors du stockage, avoir à convertir au moment de l'utiliser ??? –

+0

Oui, les données sont stockées dans un format binaire et ne contiennent aucun formatage. Vous devez le faire ailleurs –

Répondre

0

Vous êtes probablement confondre le chemin du client de formatage des dates pour certains (inexistant) format de date du serveur. Il n'y en a pas. Tous les types de date sont des valeurs binaires, tout comme int, float et decimal. Le client les met en forme dans des chaînes afin de les afficher.

SSMS n'est rien de plus qu'un client spécialisé. Par défaut, les dates sont formatées selon vos paramètres régionaux (de l'utilisateur). Cela peut entraîner une confusion lorsque la même date apparaît au 25/9/2017 à un utilisateur mais du 25/09/2017 à un autre. La date est cependant toujours la même.

Les administrateurs de bases de données et les développeurs ne se soucient pas des formats localisés. SSMS utilise YYYY-MM-DD pour éviter toute confusion.