3

基本的に、このコマンドを機能させたいと思います。

$sql = "SELECT (EntryDate + TotalTime) as DataLine FROM TimeSheet WHERE EmployeeID='AA01'";

EntryDateはテキストとしてデータベースにありますが、TotalTimeは数値です。TotalTimeをテキストとしてキャストする必要があります。これは、2つの異なるタイプの値を組み合わせると、出力が空白になることに気付いたためです。

CAST(TotalTime as XXX)を使用することになっていることは知っていますが、合法的に何にキャストできるかわかりません(char / ncharは機能していないようで、文字列もテキストも機能しません)。私はいつもフォームのエラーを受け取ります...

Syntax error (missing operator) in query expression '(EntryDate + CAST(TotalTime as string) as DataLine FROM TimeSheet WHERE EmployeeID='AA01''

助けてもらえますか?ありがとうございました!

編集これは、EntryDateとTotalTimeの値を合計して単一の値を生成することを意図したものではないことに注意してください。EntryDate値とTotalTime値を1行にまとめて、次のように表示したいだけです。

「12/10/319.25」

もう一度編集する前に指定しなかったことをお詫びします。MSSQLを使用しています

4

2 に答える 2

7

代わりにこれを試してください:

SELECT 
  CAST(EntryDate AS VARCHAR(25)) + CAST(TotalTime AS VARCHAR(10)) as DataLine 
FROM TimeSheet 
WHERE EmployeeID = 'AA01';

ただし、entrydateが日付でinttotaltimeが時刻の場合は、使用しているRDBMSによっては、時刻部分に日付部分として追加して、日時オブジェクトとして変換することを検討することをお勧めします。また、可能であれば、DATETIMEデータ型を使用して、2つの部分ではなく、日付と時刻の両方の部分を表します。そのようです:

SELECT DATEADD(hh, totaltime, entrydate)
FROM TimeSheet
WHERE EmployeeID = 'AA01';

SQLフィドルデモ

于 2012-11-08T04:06:47.570 に答える
0

MSSQL:

$sql = "SELECT EntryDate+''+CAST(TotalTime as char(25)) as DataLine FROM TimeSheet WHERE EmployeeID='AA01'";

MySQL

$sql = "SELECT CONCAT(EntryDate,' ',CONVERT(TotalTime,char(25))) as DataLine FROM TimeSheet WHERE EmployeeID='AA01'";
于 2012-11-08T04:07:23.660 に答える