Как я могу преобразовать определенный столбец datetime только в date? - PullRequest
0 голосов
/ 05 октября 2019

Я хочу получить определенный столбец с именем date_period, но только дату? Я хочу преобразовать его, чтобы не добавить еще один столбец в результате

Я пробовал это:

CONVERT(VARCHAR(10), GETDATE(), 111)

Но это просто вернет другой столбец с преобразованием datetime. У меня есть много столбцов datetime, и я просто хочу преобразовать date_period, чтобы я мог сравнить его с другим datetime, который имеет только дату и время 00:00.

Заранее спасибо.

РЕДАКТИРОВАТЬ

И, кстати, результат, который я получаю из того, что я пробовал, - это сегодняшняя дата. Как я уже сказал, у меня есть много столбцов datetime в одной таблице, я просто хочу преобразовать один столбец.

Ответы [ 4 ]

1 голос
/ 05 октября 2019

Мой предпочтительный подход

   cast(columnname as date) 
0 голосов
/ 05 октября 2019

Хотя вы уже решили это по-своему, но все же я хотел бы добавить некоторые баллы для других

Вы хотите извлечь только date часть из столбца datetime, есть некоторые доступные форматыдля получения только части даты из столбца datetime. Пожалуйста, найдите список по данной ссылке, чтобы получить форматы даты. ССЫЛКА

select convert(varchar(20), getdate(), 103)    --- DD/MM/YYYY
select convert(varchar(20), getdate(), 102)    --- YYYY.MM.DD
select convert(varchar(20), getdate(), 101)    --- MM/DD/YYYY
select convert(varchar(20), getdate(), 104)    --- DD.MM.YYYY
select convert(varchar(20), getdate(), 106)    --- DD MMM YYYY
select convert(varchar(20), getdate(), 107)    --- MMM DD, YYYY
select convert(varchar(20), getdate(), 110)    --- DD-MM-YYYY
select convert(varchar(20), getdate(), 111)    --- YYYY/MM/DD
select convert(varchar(20), getdate(), 1)    --- MM/DD/YY
select convert(varchar(20), getdate(), 2)    --- YY.MM.DD
select convert(varchar(20), getdate(), 3)    --- DD/MM/YY
select convert(varchar(20), getdate(), 4)    --- DD.MM.YY
select convert(varchar(20), getdate(), 5)    --- DD-MM-YY
select convert(varchar(20), getdate(), 6)    --- DD MMM YY
select convert(varchar(20), getdate(), 7)    --- MMM DD, YY
select convert(varchar(20), getdate(), 10)    --- MM-DD-YY
select convert(varchar(20), getdate(), 11)    --- YY/MM/DD

ПРИМЕЧАНИЕ : Это для более старой версии sql, как упоминалось sql server 2008

Для последних версий SQL 2012 и выше

Вы можете напрямую использовать cast с типом данных date.

  select cast(getdate() as date)
0 голосов
/ 05 октября 2019

Отметьте это, используйте столбец, который необходим для вас: Ожидаемая дата или ожидаемое время, как показано ниже -

if object_id('tempdb..#test') is not null
    drop table #test;

create table #test(ts datetime)

insert into #test values (getdate())

select ts as actual_datetime,
CONVERT(VARCHAR(10),GETDATE(),23) as expected_date,
cast(CONVERT(VARCHAR(10),GETDATE(),23)as datetime) as expected_datetime
from #test
0 голосов
/ 05 октября 2019

Хорошо, похоже, я решил это.

Ответ, который я нашел, таков:

REPLACE(LEFT(CONVERT (varchar, columnname, 101),10)

Спасибо за все усилия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...