2011-03-28 5 views
2

Fondamentalement, j'ai une liste de dates dans un tableau SQL avec des statistiques à côté de chacun d'eux. Je veux comparer les dates dans le tableau avec une certaine date que je choisis. Cependant, mes dates dans ma table sont stockées comme Varchar (50) (et doivent être). Apparemment, je peux convertir la date dans le tableau en type date mais je ne sais pas. Est-ce que quelqu'un sait comment? Mon code actuel peut être vu ci-dessous.vb.net Dates de vérification SQL

If Chosen = "Today" Then 
     DateStop = Today.AddDays(-1) 
     Dim objCmd As New SqlCommand("SELECT COUNT(*) FROM Stats where (Date > " & DateStop & ")", objConn) 
     MessageBox.Show("SELECT COUNT(*) FROM Stats where (Date > " & DateStop.Date & ")") 
     ObjDataReader = objCmd.ExecuteReader 
     test = ObjDataReader(0) 
     MessageBox.Show(test) 
    End If 

Merci d'avance. Editer: Je reçois toujours l'erreur de ne pas avoir de données quand je sais qu'il y a des dates dans ma table avant et après le jour où j'essaye.

+0

Essayez cette « SELECT COUNT (*) de Statistique où (convert (datetime, Date, 101)> "& DateStop &") " – Mitul

+0

@Mitul - J'ai essayé cela merci, mais toujours obtenir la même erreur. – Coolmurr

+0

il peut être plus facile de déboguer si vous exécutez votre SQL sur le backend. Je suppose qu'il y a quelque chose qui ne va pas dans la façon dont vous mettez en forme l'une des dates et c'est pourquoi vous n'obtenez aucun résultat. – Beth

Répondre

0

Je pense que ce que vous êtes absent est objCmd.Read(). Ou vous pouvez utiliser objCmd.ExecuteScalar() au lieu de objCmd.ExecuteReader().

ObjDataReader = objCmd.ExecuteReader 
ObjDataReader.Read() 
test = ObjDataReader(0) 
MessageBox.Show(test) 

Ou ...

test = objCmd.ExecuteScalar() 
MessageBox.Show(test) 

(Vous pouvez toujours besoin aussi la distribution ou la conversion des fonctions que d'autres ont suggéré.)

+0

Merci, c'était le problème, je ne peux pas croire que je l'ai négligé! Je travaille encore sur ma conversion de date. – Coolmurr

0
Select Count(*) From Stats where (CAST(Date as DateTime) > " & DateStop & ")" 

utiliser pour votre requête

+0

Merci de me donner un exemple. Malheureusement, cela donne toujours l'erreur de ne pas avoir de données. – Coolmurr

0

Tout d'abord, pouvez-vous utiliser la procédure stockée?

si vous le faites, vous pouvez créer un SP avec le code dont vous avez besoin et ajouter au début de votre SP la commande suivante

 
set dateformat 'ymd'; 

je « AMJ » mais vous pouvez utiliser un autre format aussi.

Si vous ne pouvez pas regarder la fonction T-SQL CONVERT

0

Vous aurez besoin de la commande Convert.

Par exemple, pour convertir une chaîne de la norme ISO 8601 norme

WHERE Date > CONVERT(datetime, '2006-04-25T15:50:59.997', 126)