Как преобразовать значение SqlDateTime в .Net :: DateTime - PullRequest
8 голосов
/ 13 апреля 2011

Пробовал искать везде и не идти.

Подход до сих пор DateTime dt = (DateTime)sqlparam.Value;. То, что я могу себе представить, может пойти не так в разных конфигурациях, разных региональных настройках SQL, разных региональных настройках ПК и так далее. Но опять же, анализ значения строки даты и времени в SQL - еще более безумная идея.

Есть ли рабочее решение для этого, это .NET, должно быть одно, верно?

Ответы [ 5 ]

15 голосов
/ 13 апреля 2011

Класс SqlDateTime имеет свойство Value, которое уже имеет тип DateTime. Зачем нужно какое-либо обращение? Просто используйте Value напрямую.

5 голосов
/ 13 апреля 2011
using System;

class Program
{
    static void Main()
    {
    // Taken from MySQL: SELECT CURTIME()
    //                   SELECT TIME(...)
    string mySqlTime = "23:50:26";
    DateTime time = DateTime.Parse(mySqlTime);

    // Taken from MySQL: SELECT TIMESTAMP(...)
    string mySqlTimestamp = "2003-12-31 00:00:00";
    time = DateTime.Parse(mySqlTimestamp);
    Console.WriteLine(time);

    // Taken from MySQL: SELECT CURDATE()
    //                   SELECT DATE(...)
    string mySqlDate = "2008-06-13";
    time = DateTime.Parse(mySqlDate);
    Console.WriteLine(time);
    }
}
4 голосов
/ 13 апреля 2011

Я не вижу, что не так с явным приведением, вот как я это сделаю.

Если ваши проблемы вызваны "разными конфигурациями, разными региональными настройками SQL, разными региональными настройками ПК"тогда использование другого метода преобразования не поможет.

Однако вы можете посмотреть на этот новый тип данных в SQL Server 2008: DateTimeOffset

2 голосов
/ 13 апреля 2011

Просто приведите его к DateTime.Если он обнуляем, приведите его к Nullable, который также можно записать как «DateTime?».

DateTime? value = (DateTime?)resultSet["myDateColumn"];

посмотрите на класс SqlDateTime

, он имеет методы Parse, которые вы можете проанализировать в SqlDateTime после преобразования в DateTime

0 голосов
/ 13 апреля 2011

Попробуйте использовать SqlDateTime.op_Explicit() [Ссылка: http://msdn.microsoft.com/en-us/library/exzwfa5y%28v=VS.100%29.aspx И http://msdn.microsoft.com/en-us/library/aa326475%28v=vs.71%29.aspx Также

Попробуйте это DateTime orderDate = Convert.ToDateTime(sqlparam.Value.ToString());

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