Visa obesvarade inlägg | Visa aktiva trådar Aktuellt datum och tid: 28 jan 2021, 13:45



Svara på tråd  [ 3 inlägg ] 
 MySQL: Problem med CURDATE() 
Författare Meddelande

Blev medlem: 02 nov 2006, 21:02
Inlägg: 194
OS: Ubuntu
Svara med citat
Inlägg MySQL: Problem med CURDATE()
Har en tabell som ser ut som följande:

Kod:
--------------
DESCRIBE Transactions
--------------

+---------+-------------+------+-----+---------+----------------+
| Field   | Type        | Null | Key | Default | Extra          |
+---------+-------------+------+-----+---------+----------------+
| TransID | int(11)     | NO   | PRI | NULL    | auto_increment |
| OrderID | int(11)     | NO   | MUL | NULL    |                |
| DVDID   | smallint(6) | NO   | MUL | NULL    |                |
| DateOut | date        | NO   |     | NULL    |                |
| DateDue | date        | NO   |     | NULL    |                |
| DateIn  | date        | NO   |     | NULL    |                |
+---------+-------------+------+-----+---------+----------------+


När jag försöker köra kommandot:
Kod:
> INSERT INTO Transactions (OrderID, DVDID, DateOut, DateDue) VALUES (1, 1, CURDATE(), CURDATE()+3);


Så får jag följande felmedeleande:

Kod:
ERROR 1292 (22007): Incorrect date value: '20180230' for column 'DateDue' at row 1


jag kan dock köra
Kod:
--------------
SELECT CURDATE() + 3
--------------

+---------------+
| CURDATE() + 3 |
+---------------+
|      20180230 |
+---------------+
1 row in set (0,00 sec)


utan några större problem, bortsätt från att feburari inte har 30 dagar.
Hur kan man råda bot på mina problem?


27 feb 2018, 18:21
Profil
Användarvisningsbild

Blev medlem: 16 aug 2010, 18:39
Inlägg: 728
OS: Kubuntu
Utgåva: 18.04 Bionic Beaver LTS
Svara med citat
Inlägg Re: MySQL: Problem med CURDATE()
Christian Holmberg skrev:
När jag försöker köra kommandot:
Kod:
> INSERT INTO Transactions (OrderID, DVDID, DateOut, DateDue) VALUES (1, 1, CURDATE(), CURDATE()+3);


Så får jag följande felmedeleande:

Kod:
ERROR 1292 (22007): Incorrect date value: '20180230' for column 'DateDue' at row 1


Felmeddelandet anger att 20180230 inte är ett giltigt datum, vilket stämmer, då det inte finns nǻgon 30 februari.

Verkar vara någon bugg. Vad händer om du anger CURDATE()+5 ? Får du 20180301 då? Har inte provat MySQL, men normalt ska den räkna ut rätt datum. Vet inte varför den har problem med just februari månad.

Christian Holmberg skrev:
jag kan dock köra
Kod:
--------------
SELECT CURDATE() + 3
--------------

+---------------+
| CURDATE() + 3 |
+---------------+
|      20180230 |
+---------------+
1 row in set (0,00 sec)


utan några större problem, bortsätt från att feburari inte har 30 dagar.
Hur kan man råda bot på mina problem?

Detta stärker mina misstankar att det är en bugg i MySQL. Den ska inte ge svaret 20180230 på den fråga du kör, utan borde ange 20180302.

Har du provat hur den svarar på månader med 30 dagar? Ger den t.ex. 20180431 som svar om du formulerar om din SQL fråga? Jag gissar att det är fel i februari, men mitt tips är att du testar på alla månader som inte har 31 dagar för att se var felet inträffar.


27 feb 2018, 18:50
Profil

Blev medlem: 09 apr 2018, 13:59
Inlägg: 2
OS: Ubuntu
Utgåva: 16.04 Xenial Xerus LTS
Svara med citat
Inlägg Re: MySQL: Problem med CURDATE()
SELECT CURDATE()+3 är inte det samma som dagens datum + 3 dagar utan omvandling av datumet till ett numeriskt värde samt + 3. Säga vad man vill om att det går att göra det utan varning men korrekt addering av datum är på följande sätt:

Kod:
mysql> SELECT DATE_ADD(CURDATE(), INTERVAL 3 DAY);
+-------------------------------------+
| DATE_ADD(CURDATE(), INTERVAL 3 DAY) |
+-------------------------------------+
| 2018-04-12                          |
+-------------------------------------+



Som synes hanterar den även februari korrekt ;)

Kod:
mysql> SELECT DATE_ADD('2018-02-27', INTERVAL 3 DAY);
+----------------------------------------+
| DATE_ADD('2018-02-27', INTERVAL 3 DAY) |
+----------------------------------------+
| 2018-03-02                             |
+----------------------------------------+

_________________
Driver sajten https://www.car.info


09 apr 2018, 19:18
Profil WWW
Visa inlägg nyare än:  Sortera efter  
Svara på tråd   [ 3 inlägg ] 

Vilka är online

Användare som besöker denna kategori: Inga registrerade användare och 2 gäster


Du kan inte skapa nya trådar i denna kategori
Du kan inte svara på trådar i denna kategori
Du kan inte redigera dina inlägg i denna kategori
Du kan inte ta bort dina inlägg i denna kategori
Du kan inte bifoga filer i denna kategori

Sök efter:
Hoppa till:  
Main Engineer for phpBB3: Bertie at phpBB.com © 2000 - 2002, 2005 - 2007, the Group behind the Open Source code of phpBB.
Designed by STSoftware, modified by Katt, Konservburk & Peetra. Swedish translation by Peetra & phpBB Sweden © 2006-2011