从日期时间列提取日期-SQL Server Compact

从日期时间列提取日期-SQL Server Compact,sql,sql-server-ce,Sql,Sql Server Ce,我使用的是SQLServerCompact4.0版本,虽然在google中找到它似乎很简单,但我尝试过的示例都不起作用 我的列signup\u 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

我使用的是SQLServerCompact4.0版本,虽然在google中找到它似乎很简单,但我尝试过的示例都不起作用

我的列
signup\u 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
函数,但这会迫使我计算值,这是正确的路径吗?如果是的话,我该如何定义为Y-m-d

SELECT DATEPART(month, signup_date)  

在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)
SELECT CONVERT(nvarchar(10), GETDATE(), 120)

(我推荐YYYY-MM-DD格式,但其他格式都是。)

要获取字符串值,请使用
转换

select convert(varchar(10), signup_date, 11)
在此处查看各种格式:

为了得到一个约会,并且去掉时间,做这个

Select Cast (signup_date as DATE)

SQL Server Compact没有日期类型

如果不想查看时间,请将datetime值转换为字符串:

select convert(nvarchar(10), signup_date, 120)
SELECT CONVERT(nvarchar(10), GETDATE(), 120)

(这已经过测试,实际上可以与SQL Server Compact配合使用)

我已经尝试过这一解决方案和许多其他解决方案。我想要一个能与任何LCID一起工作的通用解决方案。我的解决方案是有点复杂的代码,但它对我来说非常适合。这是一个预订系统,我需要知道谁在特定日期到达
ArriveDate
是列,
d
是我想要的日期

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

这将只返回原始日期时间类型中的日期值。因此,您可以使用输出进行任何比较

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

今天刚看到这个问题,我知道有点晚了:)但也许这会有帮助

select  convert(date,(convert(varchar(20),'04-09-2016 09:05:00')))

大多数答案都试图达到同样的目的,但对代码的解释是不够的

CONVERT(date, Date_Updated, 120)
此代码使用mssql进行转换。第一项“日期”是要返回的数据类型。可以是“datetime”、“varchar”等。 第二项“Date_Updated”是要转换的列的名称。 最后一项“120”是要返回的日期样式。有多种样式,输入的代码将决定输出。”120'表示YYYY-MM-DD。 希望这有助于选择convert(nvarchar,getdate(),1)=09/25/19

选择convert(nvarchar,getdate(),2)=19.09.25

选择convert(nvarchar,getdate(),3)=25/09/19

选择convert(nvarchar,getdate(),4)=25.09.19

选择convert(nvarchar,getdate(),5)=25-09-19

选择convert(nvarchar,getdate(),6)=19年9月25日

选择convert(nvarchar,getdate(),7)=19年9月25日

选择convert(nvarchar,getdate(),10)=09-25-19

选择convert(nvarchar,getdate(),11)=19/09/25

选择convert(nvarchar,getdate(),12)=190925

选择convert(nvarchar,getdate(),23)=2019-09-25

选择convert(nvarchar,getdate(),101)=2019年9月25日

选择convert(nvarchar,getdate(),102)=2019.09.25

选择convert(nvarchar,getdate(),103)=2019年9月25日

选择convert(nvarchar,getdate(),104)=2019年9月25日

选择convert(nvarchar,getdate(),105)=25-09-2019

选择convert(nvarchar,getdate(),106)=2019年9月25日

选择convert(nvarchar,getdate(),107)=2019年9月25日

选择convert(nvarchar,getdate(),110)=09-25-2019

选择convert(nvarchar,getdate(),111)=2019/09/25

选择convert(nvarchar,getdate(),112)=20190925

选择convert(nvarchar,getdate(),8)=13:48:36

选择convert(nvarchar,getdate(),14)=13:49:48:713

选择convert(nvarchar,getdate(),24)=13:49:57

选择convert(nvarchar,getdate(),108)=13:50:07

选择convert(nvarchar,getdate(),114)=13:50:14:490

选择convert(nvarchar,getdate(),0)=2019年9月25日下午1:50

选择convert(nvarchar,getdate(),9)=2019年9月25日下午1:50:31:813

选择convert(nvarchar,getdate(),13)=2019年9月25日13:50:39:307

选择convert(nvarchar,getdate(),20)=2019-09-2513:50:49

选择convert(nvarchar,getdate(),21)=2019-09-25 13:50:58.923

选择convert(nvarchar,getdate(),22)=09/25/19 1:51:07 PM

选择convert(nvarchar,getdate(),25)=2019-09-25 13:51:14.473

选择convert(nvarchar,getdate(),100)=2019年9月25日下午1:51

选择convert(nvarchar,getdate(),109)=2019年9月25日下午1:51:32:227

选择convert(nvarchar,getdate(),113)=2019年9月25日13:51:38:740

选择convert(nvarchar,getdate(),120)=2019-09-25 13:51:50

选择convert(nvarchar,getdate(),121)=2019-09-25 13:51:57.153


选择convert(nvarchar,getdate(),126)=2019-09-25T13:52:03.627使用此选项,我遇到了相同的问题

SELECT CAST(data_registo as date) AS "signup_date"

您是否尝试过转换(日期、注册日期)
?是的,它检索到错误:
指定的数据类型无效。[数据类型(如果已知)=日期]
您的意思是要删除时间部分,只留下日期吗?我想从我的datetime列中检索日期。我可以通过c#代码实现这一点,但不能通过SQL实现。您的返回值是字符串还是日期类型?时间仍然返回。编辑也不起作用。错误:
指定的数据类型无效。[数据类型(如果已知)=varchar]
所有解决方案均无效。错误:
指定的数据类型无效。[数据类型(如果已知)=日期]
120返回的数据超出了您的需要,然后nvarchar(10)删除您不需要的数据。您可以使用selectconvert(nvarchar,getdate(),23)来代替它。您测试过吗?SQL Server CE未列出上述发布的数据类型。