How to get the date part from a date with timestamp column in SQL Server?
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty{ margin-bottom:0;
}
up vote
2
down vote
favorite
I want to get the date in DDMMYYY
format from a field that stores date in YYYY-MM-DD Timestamp
format. (For example, '2018-11-09' should display '09Nov2018').
I know that one way is to use the datepart
function (https://docs.microsoft.com/en-us/sql/t-sql/functions/datepart-transact-sql?view=sql-server-2017) which can extract the year, month and day individually and then I can concat them.
Edit: I don't want to use getdate()
. There is a column which has YYYY-MM-DD Timestamp
format and from that column I am extracting 'DDMM2018'
. I am using:
concat
(
CONVERT(varchar, DATEPART(dd,columndate)),
CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) ,
CONVERT(varchar, DATEPART(year, columndate))
) AS trial
This gives me '9Nov2018'
and not '09Nov2018'
. I am planning to convert this back to `datetype' again as that is how I want the result.
Is there any other way to achieve this?
Any ideas/suggestions much appreciated.
sql-server sql-server-2008
add a comment |
up vote
2
down vote
favorite
I want to get the date in DDMMYYY
format from a field that stores date in YYYY-MM-DD Timestamp
format. (For example, '2018-11-09' should display '09Nov2018').
I know that one way is to use the datepart
function (https://docs.microsoft.com/en-us/sql/t-sql/functions/datepart-transact-sql?view=sql-server-2017) which can extract the year, month and day individually and then I can concat them.
Edit: I don't want to use getdate()
. There is a column which has YYYY-MM-DD Timestamp
format and from that column I am extracting 'DDMM2018'
. I am using:
concat
(
CONVERT(varchar, DATEPART(dd,columndate)),
CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) ,
CONVERT(varchar, DATEPART(year, columndate))
) AS trial
This gives me '9Nov2018'
and not '09Nov2018'
. I am planning to convert this back to `datetype' again as that is how I want the result.
Is there any other way to achieve this?
Any ideas/suggestions much appreciated.
sql-server sql-server-2008
1
If the data type isdate
, then it doesn't store it in any format, that is just how SSMS chooses to show it to you.
– Aaron Bertrand♦
yesterday
In general, you can use either the CONVERT() function with a suitable formatting code, and massage the result to your linking (chop off the beginning, end, replace unwanted characters with nothing etc). Or use FORMAT() with which you can specify a "pattern" for the returned string. Format uses more CPU, though.
– Tibor Karaszi
yesterday
How are you usingCONCAT()
in SQL Server 2008? Also, please read this about yourconvert()
calls.
– Aaron Bertrand♦
yesterday
I don't know how it is working but I tried and it worked.
– T.H.
yesterday
Then you're not using SQL Server 2008 (which is how you tagged your question), sinceCONCAT()
was introduced in SQL Server 2012.
– Aaron Bertrand♦
yesterday
add a comment |
up vote
2
down vote
favorite
up vote
2
down vote
favorite
I want to get the date in DDMMYYY
format from a field that stores date in YYYY-MM-DD Timestamp
format. (For example, '2018-11-09' should display '09Nov2018').
I know that one way is to use the datepart
function (https://docs.microsoft.com/en-us/sql/t-sql/functions/datepart-transact-sql?view=sql-server-2017) which can extract the year, month and day individually and then I can concat them.
Edit: I don't want to use getdate()
. There is a column which has YYYY-MM-DD Timestamp
format and from that column I am extracting 'DDMM2018'
. I am using:
concat
(
CONVERT(varchar, DATEPART(dd,columndate)),
CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) ,
CONVERT(varchar, DATEPART(year, columndate))
) AS trial
This gives me '9Nov2018'
and not '09Nov2018'
. I am planning to convert this back to `datetype' again as that is how I want the result.
Is there any other way to achieve this?
Any ideas/suggestions much appreciated.
sql-server sql-server-2008
I want to get the date in DDMMYYY
format from a field that stores date in YYYY-MM-DD Timestamp
format. (For example, '2018-11-09' should display '09Nov2018').
I know that one way is to use the datepart
function (https://docs.microsoft.com/en-us/sql/t-sql/functions/datepart-transact-sql?view=sql-server-2017) which can extract the year, month and day individually and then I can concat them.
Edit: I don't want to use getdate()
. There is a column which has YYYY-MM-DD Timestamp
format and from that column I am extracting 'DDMM2018'
. I am using:
concat
(
CONVERT(varchar, DATEPART(dd,columndate)),
CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) ,
CONVERT(varchar, DATEPART(year, columndate))
) AS trial
This gives me '9Nov2018'
and not '09Nov2018'
. I am planning to convert this back to `datetype' again as that is how I want the result.
Is there any other way to achieve this?
Any ideas/suggestions much appreciated.
sql-server sql-server-2008
sql-server sql-server-2008
edited yesterday
Aaron Bertrand♦
148k18280477
148k18280477
asked yesterday
T.H.
875
875
1
If the data type isdate
, then it doesn't store it in any format, that is just how SSMS chooses to show it to you.
– Aaron Bertrand♦
yesterday
In general, you can use either the CONVERT() function with a suitable formatting code, and massage the result to your linking (chop off the beginning, end, replace unwanted characters with nothing etc). Or use FORMAT() with which you can specify a "pattern" for the returned string. Format uses more CPU, though.
– Tibor Karaszi
yesterday
How are you usingCONCAT()
in SQL Server 2008? Also, please read this about yourconvert()
calls.
– Aaron Bertrand♦
yesterday
I don't know how it is working but I tried and it worked.
– T.H.
yesterday
Then you're not using SQL Server 2008 (which is how you tagged your question), sinceCONCAT()
was introduced in SQL Server 2012.
– Aaron Bertrand♦
yesterday
add a comment |
1
If the data type isdate
, then it doesn't store it in any format, that is just how SSMS chooses to show it to you.
– Aaron Bertrand♦
yesterday
In general, you can use either the CONVERT() function with a suitable formatting code, and massage the result to your linking (chop off the beginning, end, replace unwanted characters with nothing etc). Or use FORMAT() with which you can specify a "pattern" for the returned string. Format uses more CPU, though.
– Tibor Karaszi
yesterday
How are you usingCONCAT()
in SQL Server 2008? Also, please read this about yourconvert()
calls.
– Aaron Bertrand♦
yesterday
I don't know how it is working but I tried and it worked.
– T.H.
yesterday
Then you're not using SQL Server 2008 (which is how you tagged your question), sinceCONCAT()
was introduced in SQL Server 2012.
– Aaron Bertrand♦
yesterday
1
1
If the data type is
date
, then it doesn't store it in any format, that is just how SSMS chooses to show it to you.– Aaron Bertrand♦
yesterday
If the data type is
date
, then it doesn't store it in any format, that is just how SSMS chooses to show it to you.– Aaron Bertrand♦
yesterday
In general, you can use either the CONVERT() function with a suitable formatting code, and massage the result to your linking (chop off the beginning, end, replace unwanted characters with nothing etc). Or use FORMAT() with which you can specify a "pattern" for the returned string. Format uses more CPU, though.
– Tibor Karaszi
yesterday
In general, you can use either the CONVERT() function with a suitable formatting code, and massage the result to your linking (chop off the beginning, end, replace unwanted characters with nothing etc). Or use FORMAT() with which you can specify a "pattern" for the returned string. Format uses more CPU, though.
– Tibor Karaszi
yesterday
How are you using
CONCAT()
in SQL Server 2008? Also, please read this about your convert()
calls.– Aaron Bertrand♦
yesterday
How are you using
CONCAT()
in SQL Server 2008? Also, please read this about your convert()
calls.– Aaron Bertrand♦
yesterday
I don't know how it is working but I tried and it worked.
– T.H.
yesterday
I don't know how it is working but I tried and it worked.
– T.H.
yesterday
Then you're not using SQL Server 2008 (which is how you tagged your question), since
CONCAT()
was introduced in SQL Server 2012.– Aaron Bertrand♦
yesterday
Then you're not using SQL Server 2008 (which is how you tagged your question), since
CONCAT()
was introduced in SQL Server 2012.– Aaron Bertrand♦
yesterday
add a comment |
2 Answers
2
active
oldest
votes
up vote
5
down vote
accepted
Here is an example using GETDATE()
:
SELECT REPLACE(CONVERT(char(11), GETDATE(), 13),' ','');
Yields 12Nov2018
. Three days ago, it would yield 09Nov2018
.
To run this against your table:
SELECT Trial = REPLACE(CONVERT(char(11), YOUR_COLUMN_NAME_HERE, 13),' ','')
FROM dbo.YOUR_TABLE_NAME_HERE;
In SQL Server 2012 and above, you can use FORMAT()
but, like Tibor suggested, this uses more CPU (roughly doubling runtime in my tests).
SELECT FORMAT(GETDATE(), 'ddMMMyyyy');
Thank you for the answer but I can't use this as my reference date is not getdate(). There is a column which has YYYY-MM-DD Timestamp format and from that column I am extracting 'DDMM2018'. I am using concat(CONVERT(varchar, DATEPART(dd,columndate)), CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) , CONVERT(varchar, DATEPART(year, columndate))) AS trial. This gives me '9Nov2018' and not '09Nov2018'. I am planning to convert this back to datetype again as that is how I want the result.
– T.H.
yesterday
1
@T.H. you replaceGETDATE()
in my statement with the column name in your query. Your question didn't tell us either the name of the column or the name of the table, so I showed a sample that worked against a function instead.
– Aaron Bertrand♦
yesterday
Apologies about that, I will update the question. Thanks a lot.
– T.H.
yesterday
add a comment |
up vote
0
down vote
SELECT Replace(Convert(nvarchar(100),YourDate,106),' ','') gives the desired result
New contributor
add a comment |
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
5
down vote
accepted
Here is an example using GETDATE()
:
SELECT REPLACE(CONVERT(char(11), GETDATE(), 13),' ','');
Yields 12Nov2018
. Three days ago, it would yield 09Nov2018
.
To run this against your table:
SELECT Trial = REPLACE(CONVERT(char(11), YOUR_COLUMN_NAME_HERE, 13),' ','')
FROM dbo.YOUR_TABLE_NAME_HERE;
In SQL Server 2012 and above, you can use FORMAT()
but, like Tibor suggested, this uses more CPU (roughly doubling runtime in my tests).
SELECT FORMAT(GETDATE(), 'ddMMMyyyy');
Thank you for the answer but I can't use this as my reference date is not getdate(). There is a column which has YYYY-MM-DD Timestamp format and from that column I am extracting 'DDMM2018'. I am using concat(CONVERT(varchar, DATEPART(dd,columndate)), CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) , CONVERT(varchar, DATEPART(year, columndate))) AS trial. This gives me '9Nov2018' and not '09Nov2018'. I am planning to convert this back to datetype again as that is how I want the result.
– T.H.
yesterday
1
@T.H. you replaceGETDATE()
in my statement with the column name in your query. Your question didn't tell us either the name of the column or the name of the table, so I showed a sample that worked against a function instead.
– Aaron Bertrand♦
yesterday
Apologies about that, I will update the question. Thanks a lot.
– T.H.
yesterday
add a comment |
up vote
5
down vote
accepted
Here is an example using GETDATE()
:
SELECT REPLACE(CONVERT(char(11), GETDATE(), 13),' ','');
Yields 12Nov2018
. Three days ago, it would yield 09Nov2018
.
To run this against your table:
SELECT Trial = REPLACE(CONVERT(char(11), YOUR_COLUMN_NAME_HERE, 13),' ','')
FROM dbo.YOUR_TABLE_NAME_HERE;
In SQL Server 2012 and above, you can use FORMAT()
but, like Tibor suggested, this uses more CPU (roughly doubling runtime in my tests).
SELECT FORMAT(GETDATE(), 'ddMMMyyyy');
Thank you for the answer but I can't use this as my reference date is not getdate(). There is a column which has YYYY-MM-DD Timestamp format and from that column I am extracting 'DDMM2018'. I am using concat(CONVERT(varchar, DATEPART(dd,columndate)), CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) , CONVERT(varchar, DATEPART(year, columndate))) AS trial. This gives me '9Nov2018' and not '09Nov2018'. I am planning to convert this back to datetype again as that is how I want the result.
– T.H.
yesterday
1
@T.H. you replaceGETDATE()
in my statement with the column name in your query. Your question didn't tell us either the name of the column or the name of the table, so I showed a sample that worked against a function instead.
– Aaron Bertrand♦
yesterday
Apologies about that, I will update the question. Thanks a lot.
– T.H.
yesterday
add a comment |
up vote
5
down vote
accepted
up vote
5
down vote
accepted
Here is an example using GETDATE()
:
SELECT REPLACE(CONVERT(char(11), GETDATE(), 13),' ','');
Yields 12Nov2018
. Three days ago, it would yield 09Nov2018
.
To run this against your table:
SELECT Trial = REPLACE(CONVERT(char(11), YOUR_COLUMN_NAME_HERE, 13),' ','')
FROM dbo.YOUR_TABLE_NAME_HERE;
In SQL Server 2012 and above, you can use FORMAT()
but, like Tibor suggested, this uses more CPU (roughly doubling runtime in my tests).
SELECT FORMAT(GETDATE(), 'ddMMMyyyy');
Here is an example using GETDATE()
:
SELECT REPLACE(CONVERT(char(11), GETDATE(), 13),' ','');
Yields 12Nov2018
. Three days ago, it would yield 09Nov2018
.
To run this against your table:
SELECT Trial = REPLACE(CONVERT(char(11), YOUR_COLUMN_NAME_HERE, 13),' ','')
FROM dbo.YOUR_TABLE_NAME_HERE;
In SQL Server 2012 and above, you can use FORMAT()
but, like Tibor suggested, this uses more CPU (roughly doubling runtime in my tests).
SELECT FORMAT(GETDATE(), 'ddMMMyyyy');
edited yesterday
answered yesterday
Aaron Bertrand♦
148k18280477
148k18280477
Thank you for the answer but I can't use this as my reference date is not getdate(). There is a column which has YYYY-MM-DD Timestamp format and from that column I am extracting 'DDMM2018'. I am using concat(CONVERT(varchar, DATEPART(dd,columndate)), CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) , CONVERT(varchar, DATEPART(year, columndate))) AS trial. This gives me '9Nov2018' and not '09Nov2018'. I am planning to convert this back to datetype again as that is how I want the result.
– T.H.
yesterday
1
@T.H. you replaceGETDATE()
in my statement with the column name in your query. Your question didn't tell us either the name of the column or the name of the table, so I showed a sample that worked against a function instead.
– Aaron Bertrand♦
yesterday
Apologies about that, I will update the question. Thanks a lot.
– T.H.
yesterday
add a comment |
Thank you for the answer but I can't use this as my reference date is not getdate(). There is a column which has YYYY-MM-DD Timestamp format and from that column I am extracting 'DDMM2018'. I am using concat(CONVERT(varchar, DATEPART(dd,columndate)), CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) , CONVERT(varchar, DATEPART(year, columndate))) AS trial. This gives me '9Nov2018' and not '09Nov2018'. I am planning to convert this back to datetype again as that is how I want the result.
– T.H.
yesterday
1
@T.H. you replaceGETDATE()
in my statement with the column name in your query. Your question didn't tell us either the name of the column or the name of the table, so I showed a sample that worked against a function instead.
– Aaron Bertrand♦
yesterday
Apologies about that, I will update the question. Thanks a lot.
– T.H.
yesterday
Thank you for the answer but I can't use this as my reference date is not getdate(). There is a column which has YYYY-MM-DD Timestamp format and from that column I am extracting 'DDMM2018'. I am using concat(CONVERT(varchar, DATEPART(dd,columndate)), CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) , CONVERT(varchar, DATEPART(year, columndate))) AS trial. This gives me '9Nov2018' and not '09Nov2018'. I am planning to convert this back to datetype again as that is how I want the result.
– T.H.
yesterday
Thank you for the answer but I can't use this as my reference date is not getdate(). There is a column which has YYYY-MM-DD Timestamp format and from that column I am extracting 'DDMM2018'. I am using concat(CONVERT(varchar, DATEPART(dd,columndate)), CONVERT(varchar, LEFT(DATENAME(month, DATEPART(month,columndate)),3)) , CONVERT(varchar, DATEPART(year, columndate))) AS trial. This gives me '9Nov2018' and not '09Nov2018'. I am planning to convert this back to datetype again as that is how I want the result.
– T.H.
yesterday
1
1
@T.H. you replace
GETDATE()
in my statement with the column name in your query. Your question didn't tell us either the name of the column or the name of the table, so I showed a sample that worked against a function instead.– Aaron Bertrand♦
yesterday
@T.H. you replace
GETDATE()
in my statement with the column name in your query. Your question didn't tell us either the name of the column or the name of the table, so I showed a sample that worked against a function instead.– Aaron Bertrand♦
yesterday
Apologies about that, I will update the question. Thanks a lot.
– T.H.
yesterday
Apologies about that, I will update the question. Thanks a lot.
– T.H.
yesterday
add a comment |
up vote
0
down vote
SELECT Replace(Convert(nvarchar(100),YourDate,106),' ','') gives the desired result
New contributor
add a comment |
up vote
0
down vote
SELECT Replace(Convert(nvarchar(100),YourDate,106),' ','') gives the desired result
New contributor
add a comment |
up vote
0
down vote
up vote
0
down vote
SELECT Replace(Convert(nvarchar(100),YourDate,106),' ','') gives the desired result
New contributor
SELECT Replace(Convert(nvarchar(100),YourDate,106),' ','') gives the desired result
New contributor
New contributor
answered yesterday
Momo
1
1
New contributor
New contributor
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fdba.stackexchange.com%2fquestions%2f222342%2fhow-to-get-the-date-part-from-a-date-with-timestamp-column-in-sql-server%23new-answer', 'question_page');
}
);
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
1
If the data type is
date
, then it doesn't store it in any format, that is just how SSMS chooses to show it to you.– Aaron Bertrand♦
yesterday
In general, you can use either the CONVERT() function with a suitable formatting code, and massage the result to your linking (chop off the beginning, end, replace unwanted characters with nothing etc). Or use FORMAT() with which you can specify a "pattern" for the returned string. Format uses more CPU, though.
– Tibor Karaszi
yesterday
How are you using
CONCAT()
in SQL Server 2008? Also, please read this about yourconvert()
calls.– Aaron Bertrand♦
yesterday
I don't know how it is working but I tried and it worked.
– T.H.
yesterday
Then you're not using SQL Server 2008 (which is how you tagged your question), since
CONCAT()
was introduced in SQL Server 2012.– Aaron Bertrand♦
yesterday