2013-04-02 3 views
0

하루 중 시간 문제가 발생하지만 날짜와 연도가 중요하지 않은 달력 응용 프로그램에서 작업하고 있습니다. 직원은 근무 시간 (예 : 오전 8시 ~ 9시 30 분)을 입력 할 수 있으며 그 값을 다른 값과 비교합니다.PHP는 날짜가없는 시간을 조작합니다.

데이터베이스에 시간을 넣기 위해 strtotime()을 사용했지만 제공되지 않은 경우 날짜와 연도를 삽입한다는 것을 알지 못했습니다. 직원의 가용성을 특정 시간대와 비교하기 시작했을 때 모든 직원의 타임 스탬프가 어제 바쁘다고 말했기 때문에 일치하는 항목이 없습니다. : P

SQL과 PHP 모두에서 쉽게 비교할 수 있도록 데이터베이스에 시간을 저장하는 좋은 방법이 있습니까? 감사.

+3

http://dev.mysql.com/doc/refman/5.6/en/time.html – vascowhite

+0

죄송합니다. Mssql에서 작업하고 있습니다. 나는 분명히해야만했다. –

답변

1

mySQL time 데이터 유형을 찾고 있습니다. http://dev.mysql.com/doc/refman/5.6/en/time.html

Microsoft SQL Server (2008/2012)는 time 데이터 유형을 제공합니다. http://msdn.microsoft.com/en-us/library/bb677243.aspx

두 가지 모두 'HH : MM : SS'형식으로 시간을 저장할 수 있습니다. 그들은 비교할 수 있습니다. (MS SQL의 경우 범위가 00 : 00 : 00.0000000에서 23 : 59 : 59.9999999까지입니다)

내장 데이터 유형을 사용할 수없는 경우 hh : mm을 int로 변환하는 몇 가지 함수를 작성할 수 있습니다. 그리고 다시.

1 :

function HourMinuteSecToDecimal($hour_minute_sec) { 
     $t = explode(':', $hour_minute_sec); 
     return $t[0] * 60 + $t[1] * 60 + $t[2]; 
} 

echo HourMinuteSecToDecimal("23:30:25"); 
return 3205 

function DecimaltoHourMinuteSec($sec, $padHours = false) { 
    $hms = ""; 
    $hours = intval(intval($sec)/3600); 
    $hms .= ($padHours) ? str_pad($hours, 2, "0", STR_PAD_LEFT) . ':' : $hours . ':'; 
    $minutes = intval(($sec/60) % 60); 
    $hms .= str_pad($minutes, 2, "0", STR_PAD_LEFT) . ':'; 
    $seconds = intval($sec % 60); 
    $hms .= str_pad($seconds, 2, "0", STR_PAD_LEFT); 
    echo $hms; 
} 

echo DecimaltoHourMinuteSec(3205); 
return 23:30:25 
+0

MSSQL에서 작업 중입니다. 내 선택이 아니야. –

+1

안녕하세요 Kristi, MSSQL에 대한 유사한 정보를 추가했습니다. –

+0

SQL Server 2008에서 사용할 수 있음을 확인했지만 Enterprise Manager에서 열 유형으로 선택할 수는 없습니다. –

0

글쎄, 나는이 여기에 방법을 참조 당신이 당신의 타임 스탬프에서 그냥 시간을 선택하도록 쿼리를 수정 한 후 타임 스탬프와 같은 타임 스탬프를 저장하고.

2 : 문자열 필드를 사용하여 hhmm 형식으로 시간을 저장하십시오 (예 : 0112는 오전 1시 12 분 또는 오후 3시 47 분 3시 47 분). 그런 다음 선택을 사용하십시오. 나도 알아, 아주 좋은 것 같지 않지만 다시 : mysql 데이터베이스를 사용하고 시간을 데이터 유형으로 사용하는 경우 - 형식화 된 문자열이 될 수도 있습니다.

관련 문제