Πώς μπορώ να κάνω ερώτημα για όλες τις ημερομηνίες που είναι μεγαλύτερες από μια συγκεκριμένη ημερομηνία στον SQL Server;

Προσπαθώ:

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= 2010-04-01;

A.Date μοιάζει με: 2010-03-04 00:00:00.000

Ωστόσο, αυτό δεν λειτουργεί.

Μπορεί κάποιος να δώσει μια αναφορά για το γιατί;

Λύση
select *  
from dbo.March2010 A 
where A.Date >= Convert(datetime, '2010-04-01' )

Στο ερώτημά σας, το "2010-4-01" αντιμετωπίζεται ως μαθηματική έκφραση, οπότε στην ουσία διαβάζεται

select *  
from dbo.March2010 A 
where A.Date >= 2005; 

(2010 μείον 4 μείον 1 είναι 2005 Η μετατροπή της σε σωστή datetime και η χρήση μονών εισαγωγικών θα διορθώσει αυτό το πρόβλημα).

Τεχνικά, ο αναλυτής μπορεί να σας επιτρέψει να ξεφύγετε με

select *  
from dbo.March2010 A 
where A.Date >= '2010-04-01'

θα κάνει τη μετατροπή για εσάς, αλλά κατά τη γνώμη μου είναι λιγότερο ευανάγνωστο από τη ρητή μετατροπή σε DateTime για τον προγραμματιστή συντήρησης που θα έρθει μετά από εσάς.

Σχόλια (4)

Δοκιμάστε να περικλείσετε την ημερομηνία σας σε μια συμβολοσειρά χαρακτήρων.

 select * 
 from dbo.March2010 A
 where A.Date >= '2010-04-01';
Σχόλια (1)
DateTime start1 = DateTime.Parse(txtDate.Text);

SELECT * 
FROM dbo.March2010 A
WHERE A.Date >= start1;

Πρώτα μετατρέψτε το TexBox σε Datetime και στη συνέχεια....use αυτή τη μεταβλητή στο Query

Σχόλια (0)