3

基本上我想让这个命令工作:

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

EntryDate 在数据库中是一个文本,但 TotalTime 是一个数字。我需要将 TotalTime 转换为文本,因为我注意到如果我组合两种不同类型的值,它只会使输出空白。

我知道我应该使用 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 值组合成一行,其内容如下:

“12 年 10 月 31 日 9.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数据类型来表示日期和时间部分而不是两个部分。像这样:

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

SQL 小提琴演示

于 2012-11-08T04:06:47.570 回答
0

微软SQL:

$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 回答