C# Datetime to Npgsql TimestampTZ
C# 을 이용하여 TimestampTZ 형식의 컬럼에 데이터를 넣을 때, 입력한 시간과 다르게 출력되는 경우가 있다.
C#에서 입력한 시간보다 DB에는 9시간( UTC+9 한국 기준) 느린 시간이 출력되는데,
이는 C# 에서 UTC 설정을 해주면 해결할 수 있다.
1 2 3 4 5 6 | // DateTime 예제 (SpecifyKind 메소드) var time = new DateTime(2015, 10, 27, 0, 0, 0); Console.WriteLine(time.ToString()); // 2015-10-27 오전 12:00:00 var date = DateTime.SpecifyKind(time, DateTimeKind.Utc); Console.WriteLine(date.ToString()); // 2015-10-27 오전 12:00:00 | cs |
위 예제는 2015년 10월 27일 0시를 입력하여 화면에 출력하는 예제이다.
같은 시간을 설정하고, 하나는 Datetime.SpecifyKind 메소드로 UTC 형식을 설정해주었다.
하지만, C# 내에서는 같은 시간을 출력한다.
다음은, 위에서 선언한 두 DataTime을 DB로 보내는 코드의 일부분이다.
1 2 3 | // postgresql 명령어 파라메터 예제 sql.Parameters.Add("timestamp1", NpgsqlDbType.TimestampTZ).Value = time; sql.Parameters.Add("timestamp2", NpgsqlDbType.TimestampTZ).Value = date; | cs |
db에서 확인하면, 아래와 같이 출력된다.
1 2 3 | - postgresql 출력 timestamp1 = 2015-10-26 15:00:00+00 timestamp2 = 2015-10-27 00:00:00+00 | cs |
'컴퓨터 > C#' 카테고리의 다른 글
[VS] VisualStudio C# Interactive 초 간단 사용법 (0) | 2016.11.10 |
---|---|
[C#/ PostgreSQL] AWS RDS(PostgreSQL) 접속하기 및 쿼리 (0) | 2016.06.30 |
[.net] jni4net 을 이용하여 c# .net 에서 .jar 파일 사용하기 (0) | 2016.04.26 |
[VS10] 사용 가능한 소스 없음, PDB가 이미지와 일치하지 않습니다. (0) | 2016.02.22 |
[C#] 확장 메서드 (0) | 2016.02.02 |