質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Q&A

解決済

3回答

11128閲覧

Timestampでミリ秒以下を削る方法はありませんか?

Y.Mamoru

総合スコア47

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2020/10/20 07:18

編集2020/10/21 05:11

おそらく初歩的なことだろうと思うのですが、Timestampを生成したときにミリ秒以下を無くす方法知りたいです。

〇やりたいこと
oracleDBのTimestamp型カラムに、現在時刻をinsertしたい。
ただ入れる値は、「〇年〇月〇日」までのデータと、「〇時〇分〇秒」までのデータを入れたいです。

〇困っていること
色々試しているのですが、ミリ秒が必要だとエラーを吐かれます。

SimpleDateFormatを使って、
「〇年〇月〇日」
「〇時〇分〇秒」
というフォーマットをとることは出来ています。
しかしこれはString型なので、このままinsertできません。

Timestamp型カラムにisertするために、Timestamp型に変更すると「ミリ秒がないよ!」というエラーになる。堂々巡りです。。。

アドバイスを頂きたいです。

※calendarクラスも試してみたのですが、結局insertする際にTimestamp型に直すところで詰まっています。
※カラムのTimestamp型は必須になっています。

よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2020/10/20 07:21

TimeStamp は java.security.Timestamp ではなく java.sql.Timestamp を選んでいますか?
Y.Mamoru

2020/10/20 07:24

はい。java.sql.Timestampであることを確認しました。
swordone

2020/10/20 07:30

「ミリ秒を0にする」ではだめなのですか?
Y.Mamoru

2020/10/20 07:33

なるほど。ダメなことはないと思うので、試してみます!
Y.Mamoru

2020/10/20 07:49

すみません、ミリ秒を0にする方法を探しているのですが、 なかなか近いサイトが出てこないです(><) もし方法やサイトをご存じならば教えていただきです
Orlofsky

2020/10/20 13:50

oraclreDB ↓ oracleDB 質問は修正できます。
Y.Mamoru

2020/10/21 05:10

ありがとうございます。修正しておきます。
guest

回答3

0

oraclreDBのTimestamp型カラムに、現在時刻をinsertしたい。ただ入れる値は、「〇年〇月〇日」までのデータと、「〇時〇分〇秒」までのデータを入れたいです。

localDateTime#withNano() ?

java

1import java.sql.Timestamp; 2import java.time.LocalDateTime; 3 4public class Hogege { 5 public static void main(String args[]) { 6 7 LocalDateTime localDateTime = LocalDateTime.now(); 8 System.out.println(localDateTime); 9 10 Timestamp timestamp = Timestamp.valueOf(localDateTime); 11 System.out.println(timestamp); 12 13 Timestamp timestamp2 = Timestamp.valueOf(localDateTime.withNano(0)); 14 System.out.println(timestamp2); 15 } 16} 17 18// 2020-10-20T19:44:01.548909 19// 2020-10-20 19:44:01.548909 20// 2020-10-20 19:44:01.0 21

投稿2020/10/20 10:51

shiketa

総合スコア4061

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.Mamoru

2020/10/21 05:16

おお!このやり方も初めて理解しました! ありがとうございます。 ただ、自分のエクリプスのヴァージョンのせいなのか、 java.time.LocalDateTimeが使えませんでした(><)
guest

0

Oracle20C SQL言語リファレンス 日時書式モデル

書式マスク FF

小数部。基数は出力されません。基数文字の追加には、X書式要素を使用します。FFの後に1から9の数字を設定して、戻される日時値のミリ秒部分の桁数を指定します。数字を指定しない場合は、日時データ型に指定された精度またはデータ型のデフォルトの精度が使用されます。タイムスタンプ書式および期間書式では有効ですが、...

FFn で小数点以下の n 桁を指定します。

INSERT時にTIMESTAMPを加工するのではなく、以下のようにSELECT時に加工する事が多いです。

SQL

1SQL> SELECT 2 2 TO_CHAR(SYSTIMESTAMP, 'YYYYMMDD HH24MISS.FF') AS TO_CHAR_TIMESTAMP 3 3 , TO_CHAR(SYSTIMESTAMP, 'YYYYMMDD HH24MISS.FF3') AS TO_CHAR_TIMESTAM_F 4 4 FROM DUAL ; 5 6TO_CHAR_TIMESTAMP TO_CHAR_TIMESTAM_F 7---------------------- ---------------------- 820201020 234638.122000 20201020 234638.122

投稿2020/10/20 14:58

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.Mamoru

2020/10/21 05:14

なるほど!TO_CHARで文字に変えてからだとかなり扱いやすくなりますね! ありがとうございます!
guest

0

ベストアンサー

ミリ秒単位の時間であれば、
1000で割ればミリ秒はなくなります

投稿2020/10/20 08:31

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.Mamoru

2020/10/20 08:56

ミリ秒を1000で割る。ということで合ってますでしょうか? ただいま調べながらミリ秒を1000で割って、Timestamp型に変換したところ 1970年代の日付に変わってしまい、原因を探っているところです。 ミリ秒は、Long mills = System.currentTimeMillis();で求めています。
y_waiwai

2020/10/20 09:02

そいつを1000で割って、60の余りで秒が出てきます 60で割って60の余りで分が出てきます さて、時を出すにはどうすればいいかわかりますか?
Y.Mamoru

2020/10/21 05:13

数学でこんな問題ありましたね(^^; 最後は24で割ったあまりでしょうか??(><)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問