Reputation: 12064
I have one rare problem. I use this query to extract a date and time
$datum_query = mysqli_query($kon, "SELECT EXTRACT(DAY FROM datetime) AS dan, EXTRACT(MONTH FROM datetime) AS mjesec,
EXTRACT(YEAR FROM datetime) AS godina, EXTRACT(HOUR FROM datetime) AS sat, EXTRACT(MINUTE FROM datetime) AS minute, EXTRACT(SECOND FROM datetime) AS sekunde FROM cutoffs WHERE id=". $redCutoff["cutoff_id"] ."");
$datum = mysqli_fetch_assoc($datum_query);
if($datum["mjesec"] == 1){
$datumLevering = $datum["dan"] . ". Jan " . $datum["godina"];
}elseif($datum["mjesec"] == 2){
$datumLevering = $datum["dan"] . ". Feb " . $datum["godina"];
}elseif($datum["mjesec"] == 3){
$datumLevering = $datum["dan"] . ". Ma " . $datum["godina"];
}elseif($datum["mjesec"] == 4){
$datumLevering = $datum["dan"] . ". Apr " . $datum["godina"];
}elseif($datum["mjesec"] == 5){
$datumLevering = $datum["dan"] . ". Mei " . $datum["godina"];
}elseif($datum["mjesec"] == 6){
$datumLevering = $datum["dan"] . ". Jun " . $datum["godina"];
}elseif($datum["mjesec"] == 7){
$datumLevering = $datum["dan"] . ". Jul " . $datum["godina"];
}elseif($datum["mjesec"] == 8){
$datumLevering = $datum["dan"] . ". Aug " . $datum["godina"];
}elseif($datum["mjesec"] == 9){
$datumLevering = $datum["dan"] . ". Sep " . $datum["godina"];
}elseif($datum["mjesec"] == 10){
$datumLevering = $datum["dan"] . ". Okt " . $datum["godina"];
}elseif($datum["mjesec"] == 11){
$datumLevering = $datum["dan"] . ". Nov " . $datum["godina"];
}else{
$datumLevering = $datum["dan"] . ". Dec " . $datum["godina"];
}
$leveringVrijeme = $datum["sat"] . "u" . $datum["minute"];
$leveringDateandTime = $datumLevering . "-" . $leveringVrijeme;
I store in my database a datetime field and when i want to get result if value of the field is for example 2015-08-19 20:10:00, i get good result in $leveringVrijeme (20u10), but if the value is for example 2015-08-19 20:00:00, then i get in $leveringVrijeme (20u0).
Why i do not get the other 0?
Upvotes: 0
Views: 43
Reputation: 1269503
extract
returns the values as numbers. For your formatting purposes, you seem to want zero-padded strings. So, instead of extract
, use date_format()
:
select date_format(datetime, '%d') as day,
date_format(datetime, '%m') as mon,
date_format(datetime, '%Y') as year,
date_format(datetime, '%H') as hours,
date_format(datetime, '%i') as minutes,
date_format(datetime, '%s') as seconds
This retrieves them as zero-padded strings.
Upvotes: 1
Reputation: 77866
You can consider casting it to string literal or VARCHAR
using CAST
like
SELECT EXTRACT(DAY FROM datetime) AS dan,
EXTRACT(MONTH FROM datetime) AS mjesec,
EXTRACT(YEAR FROM datetime) AS godina,
CAST(EXTRACT(HOUR FROM datetime) AS VARCHAR) AS sat,
CAST(EXTRACT(MINUTE FROM datetime) AS VARCHAR) AS minute,
CAST(EXTRACT(SECOND FROM datetime) AS VARCHAR) AS sekunde
FROM cutoffs
WHERE id=". $redCutoff["cutoff_id"] ."");
Upvotes: 1