2013-11-26 1 views
1

내 호스팅 서비스에 다른 표준 시간대의 서버가있는 경우 태평양 표준시로 이동합니다. 내 로컬 시간에 (ms SQL 데이터베이스에) 삽입 시간을 조정하고 싶습니다. (유럽). 실제로 다음은 정확한 시간을 나타내는 다음 코드입니다 (04:00:15라고 가정 해 보겠습니다.)하지만 msql에서는 레코드가 항상 AM 시간 (04:00:15 AM - 위의 경우)으로 삽입됩니다.SQL의 시간은 항상 "AM"입니다. 왜?

삽입 할 때 (10AM 또는 10PM) 아무런 의미가 없으며 레코드는 항상 "AM"시간으로 표시됩니다. 왜?

이 날짜를 msql에 "datetime"으로 삽입했습니다.

답변

5

ToString 호출의 소문자 "hh"시간대는 12 시간을 나타 내기 때문입니다.

24 시간제로 대문자 "HH"를 사용해야합니다.

참조 - Custom Date and Time format strings (MSDN).

+0

이 때문에 날짜 개체를 보내기 전에 문자열로 변환하는 대신 SQLServer에 날짜 개체를 전달해야합니다. – Chris

+0

와우, 작동합니다. 실제로 저는 오래 전이 사실을 알고있었습니다 만, 코드에 약간의 변경을했고, 이것을 잊어 버렸습니다 (코드를 주석 처리하지 않았습니다), 나는이 문제에 대한 내 머리를 때리고있었습니다. 다시 한 번 감사드립니다. – rootpanthera

0

문자열을 사용하여 날짜를 나타내지 마십시오. 데이터베이스에 datetime을 사용하십시오. 매개 변수는 SqlDateTime을 사용하십시오. 그리고 위의 질문을 다룰 필요가 없습니다.

데이터베이스에 문자열을 전송 말을 할 경우, 항상 앱에서 명시 적으로 연결 SET DATEFORMAT을 지정합니다. 의심스러운 경우 unseparated string format : yyyymmdd은 현재 SET DATEFORMAT 설정의 영향을받지 않기 때문에 사용하십시오.