一尘不染

在SQL中将强制转换与多个列选择一起使用

sql

基本上,我想使此命令起作用:

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

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

我知道我应该使用CAST(TotalTime为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/31/12 9.25”

再次编辑 对不起,您之前没有指定,我使用的是MSSQL


阅读 159

收藏
2021-03-08

共1个答案

一尘不染

尝试以下方法:

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小提琴演示

2021-03-08