How to convert timestamp from MySQL table to human readable form - mysql

Any idea how to format a timestamp from a MySQL table inside a query to a human readable form?
Example:
{ts '1978-01-16 00:00:00'}
Needed output:
16-01-1978
I have tried:
select DATE_FORMAT(BIRTHDAY, '%d-%m-%Y') FROM cs_user
with no success:
[Table (rows 10 columns DATE_FORMAT(BIRTHDAY, '%D-%M-%Y')): [DATE_FORMAT(BIRTHDAY, '%D-%M-%Y'): coldfusion.sql.QueryColumn#1077e6ed] ] is not indexable by DATE_FORMAT(BIRTHDAY
My BIRTHDAY column is created as date in the MySQL table.

Take the alias name for the field and try it.
select DATE_FORMAT(BIRTHDAY, '%d-%m-%Y') as some_alias_name FROM cs_user
check, this for an example related to this.

after DATE_FORMAT in a bracket first parameter will be column of the table, then the date format,
Try this
select DATE_FORMAT(date, '%d-%m-%Y') as BIRTHDATE FROM cs_user
find the below link for all the date format which mysql supports.
http://www.w3schools.com/sql/func_date_format.asp

Try this:
SELECT DATE_FORMAT( FROM_UNIXTIME( table.column ) , '%d - %m - %Y' ) FROM table

Related

Sort by varchar date entry in SQL

I want to sort my table by DATE which is a varchar holding date information like this:
January 06, 2023 // format is Month Day, Year
I want to sort by date but it doesn't work since this is not datetime. I've tried casting DATE but it doesn't seem to work. I tried like this:
SELECT * FROM receipt WHERE ID=? ORDER BY CAST(DATE AS datetime) DESC
I also tried convert but it did not work either, I must be using the syntax wrong.
How can I sort by date if my DATE entry is of type varchar.
In MySQL you can use str_to_date with the appropriate date format to convert a varchar to a date:
SELECT * FROM receipt WHERE ID=? ORDER BY STR_TO_DATE(date, '%M %d, %Y') DESC

Format a date in mysql

To get a date I can do:
select date(now())
And it will give me:
2018-11-30
How would I format it as:
YYYYMMDD
So it gives me:
20181130
Is there a better way than:
select replace(date(now()), '-','')
SELECT DATE_FORMAT(NOW(), '%Y%m%d')
Manual:
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format

MySQL Filter Records Set Using DD-MM-YYYY Date Format

I'm a bit confused on how to filter records by date formats.
I have date column of date(yyyy-mm-dd) data type in date table.
Ex:
date
-----
2017-01-29
2017-01-30
I'm want to change the format (dd-mm-yyyy). I'm using this code
SELECT
DATE_FORMAT(`date`, '%d-%m-%Y') as date
FROM
dim_date;
date
-----
29-01-2017
30-01-2017
I want to filter the records with the(dd-mm-yyyy) format. So I tried this code.
SELECT
DATE_FORMAT(`date`, '%d-%m-%Y') date
FROM
dim_date
WHERE DATE_FORMAT(`date`, '%d-%m-%Y') BETWEEN '20-04-2015' AND '06-09-2017';
Results
Nothing
But if I try to filter with the original format (yyyy-mm-dd) It Works.
SELECT DATE_FORMAT(`date`, '%d-%m-%Y') date
FROM dim_date
WHERE DATE_FORMAT(`date`, '%Y-%m-%d') BETWEEN '2015-04-20' AND '2017-01-07';
Why is this weird behavior in Mysql? Am I missing something here?
I also tried with this format DATE_FORMAT(date, '%d-%c-%Y') , DATE_FORMAT(date, '%d-%l-%Y') & DATE_FORMAT(date, '%e-%l-%Y')
No happy face, Please let me known.
Thanks
Max
with your query you convert the date in string and then you are comparing values using between in wrong order ('20' > '06' ) so don't work.
Between require first the min value and second the max value.
If you are working with date you sould convert the string date
so the where between work correcly and avoid the string behavior is filter
SELECT date
FROM dim_date
WHERE date BETWEEN str_to_dat('20-04-2015', '%d-%m-%Y')
AND str_to_date('06-09-2017', '%d-%,-%Y');

Retrieve time from MySQL as HH:MM format

I used DATETIME datatype to store date and time in my Database. It saved date as
YY-MM-DD HH:MM:SS (2012-11-06 10:45:48)
I can retrieve the time from database as HH:MM:SS format but I want to retrieve it in HH:MM format.
How can I do this?
Check the DATE_FORMAT Function.
SELECT DATE_FORMAT(date_column, '%H:%i') FROM your_table
You will want to use DATE_FORMAT():
select date_format(yourDateColumn, '%h:%i') yourTime
from yourtable
See SQL Fiddle with Demo
SELECT DATE_FORMAT( NOW() , '%H:%i' ) AS time_column

MySQL Order By Query for varchar saved date

I try to order the results of a query by the date which is in the format yyyy/mm/dd and I am using this query to no avail.
SELECT * FROM table ORDER BY STR_TO_DATE(date, '%y/%m/%d')
I can't change the type of field that the date is stored in so I am hoping I can order the date post data entry.
Any help and advice appreciated.
If the date is in that format, you don't need to convert it to a date, surely? That format would sort alphabetically, assuming it is 0 padded... (i.e. July is 3 July 2012 is 2012/07/03...)
So you can just go:
select * from table order by date
What type of field is your date field: are you sure it is a varchar?
Assuming it is a varchar, you can work out what is going wrong by going:
select str_to_date(date, '%y/%m/%d') from table
You (should) get all NULL's, because the %y is wrong. Try:
select str_to_date(date, '%Y/%m/%d') from table
and it should work. But as noted, you don't have to convert to sort.
Try with capital Y:
SELECT * FROM table ORDER BY STR_TO_DATE(date, '%Y/%m/%d')
Lowercase Y is for yy, uppercase for yyyy.
SELECT * FROM table ORDER BY date