2013-05-23 3 views
0

Я в настоящее время зациклился на проблеме с базой данных, где мне нужно манипулировать данными, используя мои вставки базы данных. В настоящее время я делаю сайт с C# ASP.NET на Visual studio 2012, а используемая база данных - это SQL Management 2008.Различные типы манипуляций датами

Во-первых, я в настоящее время храню свой System.Date в строке и сохраняю его как тип данных nvarchar в моя база данных. Если я хотел бы, например, получить последние 10 строк, например, user = 'x', как я должен продолжать делать инструкцию SELECT только для получения данных, которые я указал?

И в настоящее время я храню информацию, такую ​​как Дата рождения, с помощью инструментария каландра Ajax, поэтому формат, в котором сохраняются даты, находится в формате месяца/дня/года. Данные также хранятся в моей базе данных как nvarchar. Если я хочу, возможно, рассчитать возраст пользователя = 'x', как мне его рассчитать?

+2

Почему вы храните его в качестве nvarchar для начала? Это логично дата/время, а не строка, поэтому * хранить * это как дату/время. Избавьтесь от строковой части, и все ваши проблемы с форматированием исчезнут. –

+0

После того, как это подходящая дата. SELECT TOP 10 * FROM Таблица WHERE User = 'X' ORDER BY Date DESC. Вы также можете использовать GETDATE(), когда записи помещаются в таблицу SQL для временных меток. –

ответ

0

Я думаю Jon's comment о хранении данных правильно как DateTime является пятно на:

Почему вы хранить его как NVARCHAR, чтобы начать с? Это логично дата/время, а не строка, поэтому сохраните ее как дату/время. Избавьтесь от части строки , и все ваши проблемы с форматированием тоже исчезнут.

Определенно сделайте это, если сможете.

Если по какой-то причине, вы не можете изменить структуру базы данных, вы можете использовать CAST/CONVERT заявление, в вашей статье ORDER BY, чтобы получить то, что вы хотите:

SELECT TOP 10 *, CAST(yourDateField AS datetime) AS convertedDate 
FROM yourTable 
WHERE 
    user='Some user' 
ORDER BY CAST(yourDateField AS datetime) DESC 

Это предполагает, что ваши данные NVARCHAR может быть правильно преобразован в datetime (что должно быть, если вы используете расширитель календаря Ajax Control Toolkit).

Смежные вопросы