удалить время из sql - PullRequest
       1

удалить время из sql

4 голосов
/ 04 августа 2010

Пожалуйста, можете ли вы мне подсказать, как я могу удалить часть времени из дат sql.Я уже прочитал сотни статей, и большинство из них убирает время, но оставляет 00:00:00, но я не хочу, также я знаю, что могу удалить эти НУЛИ, выполнив преобразование в varchar, но, к сожалению, я не могу изменить типв столбце даты это должен быть тип даты вместо строки

Пожалуйста, сообщите

Спасибо

Ответы [ 9 ]

4 голосов
/ 04 августа 2010

Столбец даты и времени в базе данных будет всегда содержать как часть даты, так и часть времени. SQL Server 2008 представляет типы, которые хранят только дату или только время. Но, пока столбец имеет тип datetime, вы должны будете принять, что часть времени существует, и вы можете просто игнорировать ее в своем приложении (применяя подходящее форматирование).

Вы можете добавить проверочное ограничение в таблицу, чтобы все записи в столбце всегда имели одинаковую часть времени (например, 00:00:00).

2 голосов
/ 04 августа 2010

Вам необходимо применить строку формата к вашему столбцу gridview, чтобы отображать только часть даты.Примером такой строки будет dd MMMM yyyy

Является ли это ASP.NET gridview?Если так, то есть пример код здесь .

2 голосов
/ 04 августа 2010

Тип DateTime сервера SQL - это дата и время, в SQL 2005 отсутствует тип поля только для даты, вы не можете удалить компонент времени и по-прежнему иметь поле типа DateTime. У вас есть варианты, которые вы обрисовали в общих чертах: Преобразовать в (n) varchar и удалить компонент времени, оставить его как DateTime и принять, что он имеет компонент времени. Почему вы хотите удалить компонент времени, какую проблему это решит для вас.

В дополнение к вашему комментарию, приведенному ниже, база данных находится не там, где вы должны форматировать строки даты для отображения в вашем GridView. Вы отображаете вещи слоя в слое отображения, в данном случае в виде сетки. Вам необходимо использовать строку формата в ваших данных при привязке данных к сетке. Yee примеры ниже.

BoundField:

<columns>
  <asp:BoundField headertext="CreationDate" dataformatstring="{0:dd-MM-yyyy}" //rearrange these letters as necessary
       datafield="CreationDate"  />
</columns>

TemplateField

<itemtemplate>
    <asp:Label id="Label1" runat="server" Text='<%# Bind("CreationDate", "{0:M-dd-yyyy}") %>'>
    </asp:Label>
</itemtemplate>
1 голос
/ 04 августа 2010
SELECT convert(varchar, getdate(), 101)

ИЛИ

Declare @datetime datetime
set @datetime = getdate()
SELECT convert(varchar, @datetime, 101)

Форматы DateTime

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

  • SQL Server 2008имеет эту функцию, если вы можете обновить.
  • Просто сохраните 00:00:00 в своей таблице и удалите временную часть в
  • Верните дату и время и отформатируйте его в вашей сетке или в вашемкод.
1 голос
/ 04 августа 2010

Попробуйте это

выберите приведение (преобразовать (char (11), getdate (), 113) в качестве даты и времени)

0 голосов
/ 04 августа 2010

Обновление mytable set mydatetime = convert (datetime, convert (char (10), mydatetime, 103), 103)

Это обновит вашу таблицу.Надеюсь, это то, что вы ищете.

103: форматируйте дату и время как дд / мм / гггг.

0 голосов
/ 04 августа 2010

Что вы пытаетесь сделать?

Почему вас волнует, сохраняет ли база данных точное время или 00: 00: 00?

Когда вы запрашиваете это поле (внутри или снаружи БД), вы можете игнорировать значение времени и показывать только дату ...

Опять скажи, что ты пытаешься сделать ... Я думаю, тебе будет легче помочь.

0 голосов
/ 04 августа 2010

Вы не можете удалить часть времени из поля типа thr datetime.

Единственное, что вы можете сделать, это привести его к типу данных date или varchar перед выводом или установить часть временидо 00:00:00 до вставки / обновления.

Пример:

оператор:

select cast(getdate() as date) 

возвращает только дату

0 голосов
/ 04 августа 2010

Если бы вы могли перейти на SQL2008, для этого есть отдельная команда времени.

Я вижу, вы говорите, что хотите сохранить его как объект даты и времени, так что, насколько я понимаю, если вы не можете перейти на 2008, вы застряли с нулями

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