2017-10-05 5 views
-1

J'utilise le code suivant pour extraire une date d'une base de données SQL.Date du jeu d'enregistrements SQL manquante en millisecondes; auto-formaté aux paramètres régionaux des États-Unis

set db = Server.CreateObject("ADODB.Connection") 
db.Open dbConnection 

Set c1 = Server.CreateObject("ADODB.Command") 
Set c1.ActiveConnection = db 
c1.CommandType = adCmdText 
c1.CommandText = "SELECT [Date] FROM SomeTable WHERE ID=?" 
c1.Parameters.Append c1.CreateParameter("@ID", adVarWChar, adParamInput, 255, CStr(ID)) 

set rs = Server.CreateObject("ADODB.Recordset") 
rs.Open c1, , 1, 3 

Lors de l'impression rs("Date"), la date est imprimée comme 12/1/2017 2:15:07PM.

L'exécution de la requête ci-dessus dans la base de données renvoie cette date 2017-12-01 14:15:06.675.

Mon objectif global est de ne pas recevoir de date, arrondie à la prochaine seconde. Je préfère recevoir une date où les millisecondes sont enlevées et non arrondies. Dans ce cas: 12/1/2017 2:15:06PM.

Il serait également très bien, pour recevoir la date de la même manière la requête renvoie la date: 2017-12-01 14:15:06.675

À ce stade, je ne suis pas sûr de ce que les causes de cette auto-formatage de la date.

Merci beaucoup pour votre aide :-)

+0

Je ne me dérange pas que cette question est en cours de vote, mais je voudrais entendre ce que je peux améliorer dans ma question :-) – jrn

+1

D'accord. Je déteste voir les votes sans raison pourquoi. Avez-vous eu la chance d'essayer la solution que j'ai postée? –

+1

@JoshMontgomery Il peut être frustrant, mais il provient de l'expérience des peuples. Auparavant, la communauté était plus ouverte, mais en raison de la vengeance, les électeurs étaient moins susceptibles d'être ouverts et honnêtes lorsqu'ils votaient. – Lankymart

Répondre

0

Vous pouvez utiliser DateDiff mais la plus petite unité peut revenir est secondes. Pas de problème pour obtenir millisecondes de quelques secondes si:

milliSecs = DateDiff("s", cdate("1970-01-01"), rs("Date")) * 1000 

vous seriez probablement mieux convertir la colonne en chaîne et le formatage de la [date] colonne directement dans sql:

c1.CommandText = "SELECT CONVERT(VARCHAR(24), [Date], 121) FROM SomeTable WHERE ID=?" 

pour plus jour formats, consultez https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql

+0

Super! Merci beaucoup. J'ai fini par enlever les quatre caractères de droite (millisecondes) en utilisant 'someVariable = LEFT (rs (" Date "), (LEN (rs (" Date ")) - 4))' après avoir utilisé votre instruction SELECT 'modifiée. – jrn

+1

@jrn au lieu de le faire après que Josh a suggéré que tout peut être fait dans la requête SQL. Ajustez simplement 'VARCHAR (24)' dans le 'CONVERT' à la longueur désirée, dans ce cas' VARCHAR (20) 'produira le même résultat. – Lankymart

+0

@Lankymart c'est une excellente suggestion. Je vous remercie!! – jrn