当前位置: 首页 > 面试题库 >

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

祁鸿晖
2023-03-14
问题内容

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

$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


问题答案:

尝试以下方法:

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



 类似资料:
  • 由于正在崩溃,如果传递的列有或以外的其他类型,并且我正在处理大量列,我想知道: 有没有一种简单的方法,一次强制转换多个列?

  • 奇怪的情况-下面是代码: 构建项目时(在项目属性中使用编译器选项Xlint:unchecked),我得到一个警告: 警告:[未选中]未选中的强制转换 ArrayList list=(ArrayList)obj[1]; 必需:ArrayList 找到:对象 但用同样的方法来浇铸字符串是可以的。这里有什么问题?

  • 问题内容: 我有一张调查答案表,类似: 并且我想创建一个查询,该查询将为我提供该表的结果摘要,从而允许我设置相关的日期范围。我下面的声明非常有效: 但是我不确定是否可以做得更好,以及在哪里添加日期范围过滤功能。 问题答案: 来自多刺的诺曼的第一个查询将给出这样的结果: 仅将几组不同的结果分组。我假设您想按问题将是/否的总数分类。在这种情况下,您必须执行以下操作: 结果:

  • 问题内容: 存储在其中的值为“ 2015-08-24”,表示数据没有问题。 当我执行上面的语句时,我得到 将日期数据类型转换为日期时间数据类型导致超出范围的值 我可以知道为什么不能向它投专栏吗? 问题答案: 问题的 根本原因 是: 数据类型具有从到的一系列可接受的值 数据类型具有从到的一系列可接受的值 因此,如果您碰巧有一个1753之前的值或一个空/ NULL值-这将超出可以处理的范围。 您应该

  • 我将Spark SQL用于数据帧。有没有一种方法可以像在SQL中一样,使用一些算术来执行select语句? 例如,我有以下表格: 现在,我想用SELECT语句创建一个新列,并对现有列执行一些算术运算。例如,我想计算比率。我需要先把价值(或年数)转换成双倍。我试过这句话,但无法解析: 我在“如何在Spark SQL的DataFrame中更改列类型?”中看到了类似的问题,但这不是我想要的。

  • 问题内容: 在我们的应用程序中,我们有一个要使用SSL的付款页面,因为我们正在处理信用卡信息。我们已经为apache制定了重写规则,以将对特定页面的请求重定向到HTTPS -它处理对支付页面(http://oursite.com/pay)的任何直接请求。 但是,我们网站中的大多数导航都是通过相对URL并在angularjs中使用而完成的,我们发现apache不能捕获这些请求,因此可以在没有SSL的