date String "08th August 2017" to date conversion in mysql - mysql

I am using MySQL, I have a column value like this 08th August 2017.
I want to convert it into a date like 8-8-2017. I have tried MySQL date_formate() function, STR_TO_DATE() function but it return a null value.
How can do this task ?

SELECT STR_TO_DATE('08th August 2017', '%D %M %Y') works fine for me

You need to use the %D %M %Y format for STR_TO_DATE
SELECT STR_TO_DATE(datefield,'%D %M %Y')
FROM yourtable
Input
08th August 2017
Output
2017-08-08
SQL Fiddle: http://sqlfiddle.com/#!9/701e66/5/0

First convert your date string into a DATETIME value and then use that in a DATE_FORMAT() to get the date into whatever format you want
SELECT DATE_FORMAT(STR_TO_DATE('08th August 2017', '%D %M %Y'),'%d-%m-%Y') AS
test;

You can use this code in mysql.
I am just giving example how to use.
select STR_TO_DATE("08th August 2017", "%d %m %y") from demo
where demo is the demo table.

Related

convert full date string to date mysql

I have database which contains string like this
22 Jan 2019 11:03
I would like to convert this string to date so I apply this query
select DATE_FORMAT(STR_TO_DATE('22 Jan 2019 11:03','%d-%m-%Y') ,'%d-%m-%Y');
but I get a null result
All you have to do is change small letter m to big letter M in your str_to_date function.
select STR_TO_DATE('22 Jan 2019 11:03','%d %M %Y');
so the final query would be:
select DATE_FORMAT(STR_TO_DATE('22 Jan 2019 11:03','%d %M %Y') ,'%d-%m-%Y');
Here is a demo
SELECT STR_TO_DATE('22 Jan 2019 11:03','%d,%m,%Y');
Basically you first need to understand the values to pass in STR_TO_DATE() and DATE_FORMAT() functions
STR_TO_DATE(my date string , current format of my date string)
Now what you are not doing right is that in STR_TO_DATE() you are passing the format '%d-%m-%Y' , this format says that the input string has hyphen separated date month and year values which is not true.
Now in your case the actual format of your date string is the following
'%d %M %Y %h:%i'
STR_TO_DATE('22 Jan 2019 11:03','%d %M %Y %h:%i')
%d - day
%M - month
%Y - year
%h - hour
%i - minute
For more info on formats click
Now that we have a complete valid value from string to date including hour and minutes, we can convert this date into any of our required format using correct parameters
SELECT DATE_FORMAT(STR_TO_DATE('22 Jan 2019 11:03','%d %M %Y %h:%i') ,'%d-%m-%y %h:%i');
You can try out various examples here
https://www.mysqltutorial.org/tryit/query/mysql-str_to_date/#1

SQL: Get the beginning date of the month from a Month_year name column

I have a date data as below:
Monthyear
Jan 2018
Feb 2018
Mar 2018
I want to convert this into this format:
Monthyear
01-01-2018
01-02-2018
01-03-2018
That is, as a date with the first date of the month.
I tried casting the above and it doesnt work.
Kindly help me out.
You can use STR_TO_DATE:
SELECT STR_TO_DATE(CONCAT('1 ', Monthyear), '%e %b %Y')
e.g.
SELECT STR_TO_DATE(CONCAT('1 ', 'Jan 2018'), '%e %b %Y')
Output:
2018-01-01
The reason for CONCATing a '1 ' to the string is to avoid issues with SQL NO_ZERO_DATE mode (this is discussed in the manual entry for STR_TO_DATE).
use str_to_date()
select str_to_Date(concat('01',Monthyear),"%d %b %Y")

MySQL - Convert Month/Yr to Date Field

I have this text string that I need to convert to a date:
June 2012
It's okay if the data is always just "01"
What's best approach to changing that "June 2012" string into a date?
Thanks in advance!
Code:
SELECT STR_TO_DATE(CONCAT('01 ', 'June 2012'), '%d %M %Y');
Result:
2012-06-01
https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_str-to-date
SELECT STR_TO_DATE(CONCAT('1 ','June 2012'),'%d %M %Y');
so the pattern is
SELECT STR_TO_DATE(CONCAT('1 ',$YOUR_DATE_STRING),'%d %M %Y');

Convert string field 'Wednesday, January 30th, 2013, 1:02 PM' to date in mySQL and replace an adjascent field

I have a table TableA with two fields, strField and dateField. The string field strField has text dates like Wednesday, January 30th, 2013, 1:02 PM in it, but I need to convert that to a date format and replace it in the adjacent field called dateField. Is there a simple way of doing this or do I have to do all the stripping ?
The last step is easy, I think. When I strip everything and get the string to look like this 2013-02-15 11:45:21.0 it will be just a simple
STR_TO_DATE('2013-02-15 11:45:21.0', '%m/%d/%Y')
Perhaps there is a function which can strip the data easily and reformat the original text string.
SELECT
DATE_FORMAT(
STR_TO_DATE( 'Wednesday, January 30th, 2013, 1:02 PM', '%W, %M %D, %Y, %I:%i %p' ), '%Y-%m-%d %T');
sqlfiddle link.
For other format conversions, check the DATE_FORMAT() at MySQL docs.
For your UPDATE this would do:
UPDATE `tableA`
SET `dateField` = DATE_FORMAT(
STR_TO_DATE(`strField`, '%W, %M %D, %Y, %I:%i %p'),
'%Y-%m-%d');

Date Format in MYSQL

I have a column date in MYSQL, i want to display date in day Month year (day of week) format.
For Example :
if date value is 2011-01-01 than it should display as 1 Jan 2012 (Sun). How should i acheive this ?
Refer this MySQL 5.1 Reference Manual for more info
Date and Time Functions
You can use this:
EDITED:
SELECT DATE_FORMAT('2012-01-01', '%d %b %Y (%a)'); will give you 1 Jan 2012 (Sun)
%d = 01;
%b = Jan;
%Y = 2012;
%a = Sun;
For a detailed date formats see: http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format
Hope this helps.
you can use DATE_FORMAT in mysql:
DATE_FORMAT(column_name, '%e %b %Y (%a )')
"%m" will give numeric value like '01','02' for Jan, Feb you should use "%b".
and also "%d" will return 2 digits like '01','02' but "%e" will return '1','2'.
check out this link for more details, you can change as per your choice.
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-format
try this
SELECT DATE_FORMAT(Date, '%d %b %Y (%a )') from table;