복붙노트

[SQL] C #을 사용하여 SQL 데이터베이스에 날짜 시간 값을 삽입

SQL

C #을 사용하여 SQL 데이터베이스에 날짜 시간 값을 삽입

어떻게 컬럼의 유형이 날짜 인 SQL 데이터베이스 테이블에 날짜 시간 값을 삽입합니까?

해결법

  1. ==============================

    1.다음은 일을하고 내 추천 (매개 변수가있는 쿼리를)입니다해야합니다 :

    다음은 일을하고 내 추천 (매개 변수가있는 쿼리를)입니다해야합니다 :

    DateTime dateTimeVariable = //some DateTime value, e.g. DateTime.Now;
    SqlCommand cmd = new SqlCommand("INSERT INTO <table> (<column>) VALUES (@value)", connection);
    cmd.Parameters.AddWithValue("@value", dateTimeVariable);
    
    cmd.ExecuteNonQuery();
    
  2. ==============================

    2.

     DateTime time = DateTime.Now;              // Use current time
     string format = "yyyy-MM-dd HH:mm:ss";    // modify the format depending upon input required in the column in database 
     string insert = @" insert into Table(DateTime Column) values ('" + time.ToString(format) + "')"; 
    

    쿼리를 실행합니다.  DateTime.Now 현재 날짜 시간을 삽입하는 것이다 ..

  3. ==============================

    3.그것은 YYYY-MM-DD 형식의 HH를 사용하는 것이 더 표준입니다 : MM : SS (IE : 2009-06-23 19시 30분 20초)

    그것은 YYYY-MM-DD 형식의 HH를 사용하는 것이 더 표준입니다 : MM : SS (IE : 2009-06-23 19시 30분 20초)

    당신이 날짜 (MM / DD / YYYY 또는 DD / MM / YYYY)의 형식에 대해 걱정할 필요가 없습니다 것을 사용. 그것은 그들 모두와 함께 작동합니다.

  4. ==============================

    4.

    using (SqlConnection conn = new SqlConnection())
    using (SqlCommand cmd = conn.CreateCommand())
    {
        cmd.CommandText = "INSERT INTO <table> (<date_column>) VALUES ('2010-01-01 12:00')";
        cmd.ExecuteNonQuery();
    }
    

    이 완벽하지 않을 수 있습니다, 그래서 내가이 물건을 쓴 후 시간이 많이 지났습니다. 하지만 일반적인 생각이있다.

    경고 :이 unsanitized입니다. 당신은 주입 공격을 방지하기 위해 매개 변수를 사용합니다.

    편집 : 존은 주장입니다.

  5. ==============================

    5.이것은 (매개 변수화 된 쿼리를 사용하십시오) 좀 시간대 토론으로 확장하고자하는 적절한 대답과 함께 오래된 질문이다. 내 현재 프로젝트를 위해 나는 열이 시간대를 처리하는 날짜를 어떻게에 관심이 질문은 내가 찾은입니다.

    이것은 (매개 변수화 된 쿼리를 사용하십시오) 좀 시간대 토론으로 확장하고자하는 적절한 대답과 함께 오래된 질문이다. 내 현재 프로젝트를 위해 나는 열이 시간대를 처리하는 날짜를 어떻게에 관심이 질문은 내가 찾은입니다.

    그들은 모두에서,하지, 밝혀졌습니다.

    날짜 열 저장 지정된 날짜 시간은 변환없이 임의이다. 주어진 날짜는 UTC 또는 로컬 경우 그것은 중요하지 않습니다.

    당신은 자신을 위해 볼 수 있습니다 :

    using (var connection = new SqlConnection(connectionString))
    {
        connection.Open();
        using (var command = connection.CreateCommand())
        {
            command.CommandText = "SELECT * FROM (VALUES (@a, @b, @c)) example(a, b, c);";
    
            var local = DateTime.Now;
            var utc = local.ToUniversalTime();
    
            command.Parameters.AddWithValue("@a", utc);
            command.Parameters.AddWithValue("@b", local);
            command.Parameters.AddWithValue("@c", utc.ToLocalTime());
    
            using (var reader = command.ExecuteReader())
            {
                reader.Read();
    
                var localRendered = local.ToString("o");
    
                Console.WriteLine($"a = {utc.ToString("o").PadRight(localRendered.Length, ' ')} read = {reader.GetDateTime(0):o}, {reader.GetDateTime(0).Kind}");
                Console.WriteLine($"b = {local:o} read = {reader.GetDateTime(1):o}, {reader.GetDateTime(1).Kind}");
                Console.WriteLine($"{"".PadRight(localRendered.Length + 4, ' ')} read = {reader.GetDateTime(2):o}, {reader.GetDateTime(2).Kind}");
            }
        }
    }
    

    물론 시간대에 의존하지만, 가장 중요한 것은 읽기 값이 모두 지정되지 않은 종류를 = 것의이 뜻을 인쇄 할 무엇. 첫 번째와 두 번째 출력 라인 오프셋 시간대에 따라 다를 수 있습니다. 두 번째 및 세 번째는 동일하다. 은 "O"형식 문자열 (왕복)을 사용하면 읽기 값에 대한 모든 시간대 지정자를 표시하지 않습니다.

    00 : GMT + 02 실시 예에서 출력 :

    a = 2018-11-20T10:17:56.8710881Z      read = 2018-11-20T10:17:56.8700000, Unspecified
    b = 2018-11-20T12:17:56.8710881+02:00 read = 2018-11-20T12:17:56.8700000, Unspecified
                                          read = 2018-11-20T12:17:56.8700000, Unspecified
    

    또한 데이터가 10ms의처럼 보이는립니다 (또는 둥근)되는 방식으로 확인합니다.

  6. ==============================

    6.당신은 특별한 형식의 문자열로 SQL로 날짜 시간 값을 보낼 수 있습니다. 이 형식은 "SS : mm YYYY-MM-DD HH"입니다

    당신은 특별한 형식의 문자열로 SQL로 날짜 시간 값을 보낼 수 있습니다. 이 형식은 "SS : mm YYYY-MM-DD HH"입니다

    예 : currentTime을가 SQL에서 날짜 유형으로 변수입니다. 그리고 DT는 닷넷에서 날짜 시간 변수입니다.

    DateTime dt=DateTime.Now;
    string sql = "insert into Users (CurrentTime) values (‘{0}’)";
    
    sql = string.Format(sql, dt.ToString("yyyy-MM-dd HH:mm:ss") );
    
  7. ==============================

    7.주위 작은 따옴표로 문자열로 기존의 DateTime 개체를 변환합니다. 나는 정말 오랫동안이 유효한 경우, 어떤 형식으로 중요한 생각하지 않습니다.

    주위 작은 따옴표로 문자열로 기존의 DateTime 개체를 변환합니다. 나는 정말 오랫동안이 유효한 경우, 어떤 형식으로 중요한 생각하지 않습니다.

    이 같은:

    string data = "'" + date.ToString() = "'";
    

    선택적으로 당신은 새로운 형식을 만들어 data.ToString (형식)에 매개 변수로 전달할 수 있습니다;

  8. ==============================

    8.

    INSERT INTO <table> (<date_column>) VALUES ('1/1/2010 12:00')
    
  9. from https://stackoverflow.com/questions/1032495/insert-datetime-value-in-sql-database-with-c-sharp by cc-by-sa and MIT license