J'ai un champ varchar qui ressemble (malheureusement je n'ai aucun contrôle sur les données):casting MySQL
Fri, 30 Oct 2009 06:30:00 EDT
est-il un moyen de lancer ce dans un format d'horodatage pour que je puisse puis trier en fonction dessus?
J'ai un champ varchar qui ressemble (malheureusement je n'ai aucun contrôle sur les données):casting MySQL
Fri, 30 Oct 2009 06:30:00 EDT
est-il un moyen de lancer ce dans un format d'horodatage pour que je puisse puis trier en fonction dessus?
SELECT STR_TO_DATE('Fri, 30 Oct 2009 06:30:00 EDT', '%a, %d %b %Y %H:%i:%s EDT')
Avez-vous essayé:
SELECT [...], CAST(varchar_field as DATETIME) as converted FROM [...]
Voir manual entry for cast here.
Si cela ne fonctionne pas, vous pouvez essayer le str_to_date function. Cette fonction prend une chaîne et une description de format et la convertit en une valeur-date. Ce sont les valeurs de mise en forme, vous pouvez utiliser:
%a Abbreviated weekday name (Sun..Sat) %b Abbreviated month name (Jan..Dec) %c Month, numeric (0..12) %D Day of the month with English suffix (0th, 1st, 2nd, 3rd, …) %d Day of the month, numeric (00..31) %e Day of the month, numeric (0..31) %f Microseconds (000000..999999) %H Hour (00..23) %h Hour (01..12) %I Hour (01..12) %i Minutes, numeric (00..59) %j Day of year (001..366) %k Hour (0..23) %l Hour (1..12) %M Month name (January..December) %m Month, numeric (00..12) %p AM or PM %r Time, 12-hour (hh:mm:ss followed by AM or PM) %S Seconds (00..59) %s Seconds (00..59) %T Time, 24-hour (hh:mm:ss) %U Week (00..53), where Sunday is the first day of the week %u Week (00..53), where Monday is the first day of the week %V Week (01..53), where Sunday is the first day of the week; used with %X %v Week (01..53), where Monday is the first day of the week; used with %x %W Weekday name (Sunday..Saturday) %w Day of the week (0=Sunday..6=Saturday) %X Year for the week where Sunday is the first day of the week, numeric, four digits; used with %V %x Year for the week, where Monday is the first day of the week, numeric, four digits; used with %v %Y Year, numeric, four digits %y Year, numeric (two digits) %% A literal “%” character %x x, for any “x” not listed above
Utilisez STR_TO_DATE
Mais gardez à l'esprit que cela est inefficace pour un grand nombre de lignes.
mysql> SELECT STR_TO_DATE("Fri, 30 Oct 2009 06:30:00 EDT", "%a, %e %b %Y %H:%i:%S EDT");
+---------------------------------------------------------------------------+
| STR_TO_DATE("Fri, 30 Oct 2009 06:30:00 EDT", "%a, %e %b %Y %H:%i:%S EDT") |
+---------------------------------------------------------------------------+
| 2009-10-30 06:30:00 |
+---------------------------------------------------------------------------+
1 row in set (0.03 sec)
Merci beaucoup! Workd :) – Petrogad