4

[回答]

谢谢大家!解决以下问题的代码是:

SELECT ID
FROM Schedule
WHERE (SUBSTRING(Time, 1, 2) = DATEPART(hh, GETDATE()))

如何在 SQL Server CE 中选择前两个字符?

例如:

+-----+-----------+------------+
+ Day +  Time     +  ID        +
+-----+-----------+------------+
+ 1   +  08:00:00 +  A1        +
+ 1   +  09:00:00 +  A2        +
+ 1   +  09:30:00 +  A3        +
+ 1   +  10:15:00 +  A4        + 
+-----+-----------+------------+

Time列是一种nvarchar类型。

然后,我想ID根据实时时间选择唯一的时间,比如只08选择08:00:00. 我怎样才能做到这一点?

4

3 回答 3

10

SUBSTRING 在 CE 中可用 - http://msdn.microsoft.com/en-us/library/aa275646(SQL.80).aspx

SUBSTRING ( expression , start , length )
于 2012-05-08T01:27:17.297 回答
2

SQL Standard 方法由语法图给出:

<character substring function> ::=
         SUBSTRING <left paren> <character value expression> FROM <start position>
         [ FOR <string length> ] [ USING <char length units> ] <right paren> 

因此,在此示例中:

SELECT SUBSTRING(Time FROM 1 FOR 2) FROM AnonymousTable;

一些 DBMS(Oracle 和那些模拟 Oracle)提供了一个 SUBSTR() 函数:

SELECT SUBSTR(Time, 1, 2) FROM AnonymousTable;

The1是起始偏移量,从 1 开始计数,并且 the2是长度(不是结束偏移量,尽管在此示例中它们是相同的,以及任何其他起始为 1 的偏移量)。

您的特定 DBMS 可能还有其他方法。例如,使用 Informix,您可以编写:

SELECT Time[1,2] FROM AnonymousTable;

不过这一次,下标是开始和停止位置。

Informix 支持所有这三个。我不知道任何其他使用下标表示法的 DBMS。

于 2012-05-08T01:17:47.657 回答
1

你的意思是这样吗?

SELECT LEFT(Time, 2) From Table
于 2012-05-08T01:16:58.207 回答