2016-09-04 26 views
1

我正在使用SQL Server Compact 4.0版本,虽然它可能看起来是一个简单的事情,在谷歌中找到,我试过的例子都没有工作。从datetime列提取日期 - SQL Server Compact

我的专栏signup_date是一个DateTime,其值为04-09-2016 09:05:00

我试过到目前为止没有成功:

SELECT FORMAT(signup_date, 'Y-m-d') AS signup_date; 
SELECT CONVERT(signup_date, GETDATE()) AS signup_date 
SELECT CAST(data_registo, date) AS signup_date 

我发现我可以用DATEPART功能,但是这将迫使我Concat的价值观,这是遵循了正确的道路?如果是这样,我该如何连接Y-m-d?

SELECT DATEPART(month, signup_date) 
+0

您是否试过'convert(date,signup_date)'? –

+0

是的,它检索错误:'指定的数据类型无效。[数据类型(如果知道)=日期]' – Linesofcode

+0

你的意思是你想删除时间部分,只是离开日期? –

回答

0

SQL Server Compact没有日期类型。

如果你不希望看到的时间,日期时间值转换为字符串:

SELECT CONVERT(nvarchar(10), GETDATE(), 120) 

(这已经过测试和实际工作针对的SQL Server Compact)

0

在SQL Server这样做可能适用于你的目的的老式方法:

select dateadd(day, datediff(day, 0, signup_date), 0) 

datediff()得到的天数(作为一个整数),因为时间0。dateadd()添加此号码回来。

如果你不喜欢0作为一个日期,你可以把任何有效的日期在其位:

select dateadd(day, datediff(day, '2000-01-01', signup_date), '2000-01-01') 

编辑:

如果你根本不希望看到的时候,日期转换为字符串:

select convert(nvarchar(10), signup_date, 120) 

(我推荐的YYYY-MM-DD格式,但其他人available。)

+0

时间仍然返回。 – Linesofcode

+0

无法编辑您的编辑。错误:'指定的数据类型无效。 [数据类型(如果已知)= varchar]' – Linesofcode

+0

使用nvarchar(10) - SQL Compact仅使用unicode – ErikEJ

-1

得到一个字符串值,在这里使用CONVERT

select convert(varchar(10), signup_date, 11) 

检查各种格式:

https://msdn.microsoft.com/en-us/library/ms187928.aspx

获得一个约会,只是去掉了时间,这样做

Select Cast (signup_date as DATE) 
+0

这些解决方案均不起作用。错误:'指定的数据类型无效。 [数据类型(如果知道)= DATE]' – Linesofcode

0

我曾尝试这和许多其他解决方案。我想要一个可以与任何LCID配合使用的通用解决方案。我的解决方案是一些令人费解的代码,但它对我来说非常合适。这是一个预订系统,我需要找出谁在特定的日期抵达。 ArriveDate是列,d是我想要的日期。

SQL = "SELECT * FROM tablename WHERE dateadd(day, datediff(day, 0, 
ArriveDate), 0)=' " & Format(d, "yyyy-MM-dd") & " ' "