Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server:CAST(some_语句)-某些_语句知道其内部CAST()吗?_Sql_Sql Server_Sql Server 2008_Casting - Fatal编程技术网

SQL Server:CAST(some_语句)-某些_语句知道其内部CAST()吗?

SQL Server:CAST(some_语句)-某些_语句知道其内部CAST()吗?,sql,sql-server,sql-server-2008,casting,Sql,Sql Server,Sql Server 2008,Casting,虽然我以前使用过MySQL,但我对SQL Server还是相当陌生 考虑一下这句话 SELECT CAST(CURRENT_TIMESTAMP AS DATE) AS currentdate FROM someTable; SELECT CURRENT_TIMESTAMP AS DATE FROM someTable; 在上面的例子中,CURRENT_TIMESTAMP AS DATE知道它在CAST()中吗 现在考虑这个陈述 SELECT

虽然我以前使用过MySQL,但我对SQL Server还是相当陌生

考虑一下这句话

SELECT  
    CAST(CURRENT_TIMESTAMP AS DATE) AS currentdate 
FROM
    someTable;
SELECT
    CURRENT_TIMESTAMP AS DATE 
FROM
    someTable;
在上面的例子中,
CURRENT_TIMESTAMP AS DATE
知道它在
CAST()中吗

现在考虑这个陈述

SELECT  
    CAST(CURRENT_TIMESTAMP AS DATE) AS currentdate 
FROM
    someTable;
SELECT
    CURRENT_TIMESTAMP AS DATE 
FROM
    someTable;
第一个函数只返回日期,而第二个函数返回完整的时间和日期、时间

问题是,如果
CURRENT\u TIMESTAMP AS DATE
CAST()内,与其他情况相比会发生什么

我确实意识到AS DATE在这里的意思是将结果中的列重命名为
DATE
,但在
CAST
中它的意思完全不同

奇怪的是,
CAST()
或任何其他函数都会影响其中语句的实现

例如,在Java中,如果我有一个add方法(inta,intb),我可以执行add((2+2),(4+2))。因此,括号内的语句将首先编译,并作为add(4,6)发送到方法


需要更多澄清

第一个将其转换为没有时间附加的日期数据类型


第二种方法只是将别名分配给带有[Date]的当前_时间戳,该时间戳将显示为列名,感谢JNevil的澄清


CAST需要两个由关键字“AS”分隔的参数。它解析它并做它所做的事情。SELECT可以使用由AS分隔的字段和别名,它可以执行不同的操作

也许最好的思考方式是将“AS”作为“+”之类的运算符,这可能意味着根据上下文添加或连接。在这种情况下,上下文是使用它的函数所要求的

例如2+2等于4,但在“+”本身是分隔符的情况下,语句2+2只表示两个不同的值,而不是一个值(加法的结果)


混淆只在于“AS”在这里的不同上下文中使用。

您的第一条语句是以新格式转换数据类型,然后别名为currentdate列。您的第二条语句只是将当前的时间戳放在一个名为DATE的列中。第二种情况下的AS是别名,而不是参数。也许这会有所帮助,在您的第一个查询中,括号内的列没有名称。这称为。这就是在
cast()
内部和不在
cast()
内部的上下文如何决定两条语句的含义和结果。奇怪的是,cast()如何影响itCAST内部语句的实现需要两个由关键字“AS”分隔的参数。它解析它并做它所做的事情。SELECT可以使用由AS分隔的字段和别名,它可以执行不同的操作。比如“smokin’把报纸读给全班听”和“smokin’把报纸读给全班听”。相同的单词,不同的上下文,不同的意思。顺便说一句,MySql中也有。这是标准的SQL。我已经知道了,但实际的问题是,CAST()如何将当前的时间戳的实现更改为日期。因为我一直认为这是一个标识符。JNevill解释说,CAST()接受2个参数,并用AS分隔,这样就完全有意义了