Vergelijk datums in MySQL

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

LEAVE A REPLY

Please enter your comment!
Please enter your name here

18 − 18 =

Other episodes