Ik wil een datum vergelijken uit een database die tussen 2 opgegeven datums ligt.
De kolom uit de database is DATETIME en ik wil deze alleen vergelijken met de datumnotatie, niet met de datetime-notatie.
SELECT * FROM `players` WHERE CONVERT(CHAR(10),us_reg_date,120) >= '2000-07-05' AND CONVERT(CHAR(10),us_reg_date,120) <= '2011-11-10'
Ik krijg deze foutmelding als ik de bovenstaande SQL uitvoer:
Je hebt een fout in je SQL-syntaxis;
controleer de handleiding die overeenkomt met
uw MySQL-serverversie voor de
juiste syntaxis om near . te gebruiken
‘us_reg_date,120) >= ‘2000-07-05’ EN
CONVERTEREN(CHAR(10),us_reg_date,120) <=
‘2011-‘ op regel 1
Hoe kan dit probleem worden opgelost?
Antwoord 1, autoriteit 100%
U kunt onderstaande zoekopdracht proberen,
select * from players
where
us_reg_date between '2000-07-05'
and
DATE_ADD('2011-11-10',INTERVAL 1 DAY)
Antwoord 2, autoriteit 97%
Dat is SQL Server-syntaxisvoor het converteren van een datum naar een tekenreeks . In MySQL kunt u de DATEfunctie om de datum uit een datetime te halen:
SELECT *
FROM players
WHERE DATE(us_reg_date) BETWEEN '2000-07-05' AND '2011-11-10'
Maar als u wilt profiteren van een index in de kolom us_reg_date
, kunt u dit in plaats daarvan proberen:
SELECT *
FROM players
WHERE us_reg_date >= '2000-07-05'
AND us_reg_date < '2011-11-10' + interval 1 day
Antwoord 3, autoriteit 11%
Dit werkt voor mij:
select date_format(date(starttime),'%Y-%m-%d') from data
where date(starttime) >= date '2012-11-02';
Let op de notatiereeks ‘%Y-%m-%d’ en de notatie van de invoerdatum.
Antwoord 4, autoriteit 6%
Ik heb het antwoord.
Hier is de code:
SELECT * FROM table
WHERE STR_TO_DATE(column, '%d/%m/%Y')
BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
AND STR_TO_DATE('07/10/15', '%d/%m/%Y')
Antwoord 5, autoriteit 3%
dit is wat het voor mij werkte:
select * from table
where column
BETWEEN STR_TO_DATE('29/01/15', '%d/%m/%Y')
AND STR_TO_DATE('07/10/15', '%d/%m/%Y')
Houd er rekening mee dat ik STR_TO_DATE(kolom, ‘%d/%m/%Y’) van eerdere oplossingen moest wijzigen, omdat het lang duurde om te laden