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

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

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

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

980閲覧

python sql 時刻抽出

cozy52

総合スコア7

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/02/02 08:25

登録時刻の時間(hour)が10時以降のものを抽出したいのですが、下記のものではできませんでした。
どなたか教えて頂けたら助かります。お願いします。
WHERE DATEPART ( HOUR , 登録時刻) > 10

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

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

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

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

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

can110

2020/02/02 08:32

データベースの種類(MySQLなど)、抽出対象のテーブル定義(DATEPARTやHOURなどの型が分かるように)、具体的なデータ例とその場合に欲しい結果、現状動作させているソースコードを提示ください。
Orlofsky

2020/02/02 12:32

カラムのデータ型によってもSQLの書き方が違いますから、質問にcreate tableも追記してください。
cozy52

2020/02/03 05:31 編集

ご返信ありがとうございます。 説明不足で申し訳ありません。 SQL Server 2014 version 12.0.6329.1 python ソースコード con = login() cursor = con.cursor() cursor.execute('select 日付, 顧客名, 商品名, 個数, 登録時刻 \ from 販売データ \ WHERE DATEPART ( HOUR , 登録時刻) > 10;') rows = cursor.fetchall() 登録時刻のデータ型はdatetimeです。 登録時刻 2019-03-01 9:25:48.000 2019-03-14 11:28:17.000 … SQLによって登録時刻が10時以降のものだけを抽出したいです。 上記の例では3/1のレコードは抽出せず、3/14を抽出。 SQL Server Management Studio では上記のSQLでできましたが、 Python 3.7 で実行したところエラーは出ないのですが、抽出されませんでした。 (rowsに何もデータがありません) 不勉強で申し訳ありませんが、他にも必要であれば教えて頂きたいです。
Orlofsky

2020/02/03 05:57

ここではなく質問を修正してください。
guest

回答1

0

ベストアンサー

OS=Win10Pro, Python=3.7
SQL Server=2014(12.0.4237.0), pyodbc=4.0.27, ODBCドライバ=SQL Server(10.00.18362.01)
にて単純なテーブルを作成して試してみましたが、正常に動作しました。
参考まで。

Python

1import pyodbc 2 3cnxn = pyodbc.connect(r'Driver={SQL Server}; Server=.\SQLEXPRESS; Database=dbTest; Trusted_Connection=yes;') 4cursor = cnxn.cursor() 5cursor.execute('SELECT * FROM t_test WHERE DATEPART ( HOUR , 登録時刻) > 12;') 6row = cursor.fetchall() 7print(row) # [(4, datetime.datetime(2020, 2, 6, 13, 0)), (5, datetime.datetime(2020, 2, 7, 14, 0))]

テーブル情報

SQL

1USE [dbTest] 2GO 3SET ANSI_NULLS ON 4GO 5SET QUOTED_IDENTIFIER ON 6GO 7CREATE TABLE [dbo].[t_test]( 8 [id] [bigint] NOT NULL, 9 [登録時刻] [datetime] NULL, 10 CONSTRAINT [PK_t_test] PRIMARY KEY CLUSTERED 11( 12 [id] ASC 13)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 14) ON [PRIMARY] 15GO 16INSERT [dbo].[t_test] ([id], [登録時刻]) VALUES (1, CAST(N'2020-02-03T10:00:00.000' AS DateTime)) 17GO 18INSERT [dbo].[t_test] ([id], [登録時刻]) VALUES (2, CAST(N'2020-02-04T11:00:00.000' AS DateTime)) 19GO 20INSERT [dbo].[t_test] ([id], [登録時刻]) VALUES (3, CAST(N'2020-02-05T12:00:00.000' AS DateTime)) 21GO 22INSERT [dbo].[t_test] ([id], [登録時刻]) VALUES (4, CAST(N'2020-02-06T13:00:00.000' AS DateTime)) 23GO 24INSERT [dbo].[t_test] ([id], [登録時刻]) VALUES (5, CAST(N'2020-02-07T14:00:00.000' AS DateTime)) 25GO

投稿2020/02/03 08:04

can110

総合スコア38341

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

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

cozy52

2020/02/04 10:28

ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問