'2013-01-01 12:25:32' (yyyy-mm-dd hh:mm:ss) のような時間の 2 つの日付があり、DateA と DateB の違いを分単位で見つける必要があります。これどうやってするの?
ありがとうございました
'2013-01-01 12:25:32' (yyyy-mm-dd hh:mm:ss) のような時間の 2 つの日付があり、DateA と DateB の違いを分単位で見つける必要があります。これどうやってするの?
ありがとうございました
VFP は、両方が同じ日付または日付/時刻形式である限り、日付と日時の計算を簡単に処理します。
Oleg は、文字列形式と実際の日付または日付/時刻形式のデータ型の変換については正しいですが、明らかに VFP をすぐに利用できます。これらのいくつかを試して、何が起こっているのかを感じてください。
両方のフィールドが日付のみの場合、加算/減算は DAYS に基づきます
ldStartDate = date( 2013, 12, 5 )
ldOtherDate = date( 2013, 11, 24 )
nDaysDiff = ldStartDate - ldOtherDate
結果は11日。
特定の月の最初に計算しますか?
ldFirstOfMonth = ldStartDate - DAY( ldStartDate ) +1
例の day() は 5 (12 月 5 日) を返すため、12 月 5 日 - 5 日 = 11 月の最終日 +1 は 12 月 1 日に戻ります。
さて、日付/時刻フィールドで -- 日付/時刻は SECONDS 差に基づいています
ldStartTime = DATETIME( 2013, 12, 5, 8, 56, 00 )
ldOtherTime = DATETIME( 2013, 11, 24, 12, 00, 00 )
nSecDiff = ldStartTime - ldOtherTime
? nSecDiff
result = 939360 seconds
? nSecDiff / 60
result = 15656 minutes
? nSecDiff / 60 / 60
result = 260.93 hours
? nSecDiff / 60 / 60 / 24
result is 10.87 days
ああ...そして忘れてしまった...日付/日時への数値を扱う場合、それらは日(月の最初を計算するためのサンプルのように)と日付/時刻フィールドの結果の秒にそれぞれ対応しています。
そう
? ldStartDate + 10
would result in Dec 5 + 10 days or Dec 15th
? ldStartDate - 3
would result in Dec 5 - 3 days or Dec 2nd
** from when ldStartTime initially set to Dec 5 at 8:56:00am
? ldStartTime + 20
would be Dec 5, 8:56:20am
? ldStartTime + (20*60)
would be Dec 5, 8:56:00am + 20 MINUTES = 9:16am
? ldStartTime + (1*60*60)
would be Dec 5, 8:56:00am + 1 HOUR = 9:56am
? ldStartTime + (1*60*60*24)
would be Dec 5, 8:56:00am + 1 DAT = Dec 6, 8:56am
CTOT() 関数を使用できますが、文字列には「T」記号ではなく空白記号が含まれているため、最初に置き換える必要があります。
?CTOT(CHRTRAN('2013-01-01 12:25:35', ' ', 'T'))-CTOT(CHRTRAN('2013-01-01 12:25:32', ' ', 'T'))
結果は3になります。