从datetime列提取日期 - SQL Server Compact

问题描述 投票:1回答:7

我正在使用SQL Server Compact 4.0版本,虽然在谷歌中找到它似乎很简单,但我尝试过的例子都不起作用。

我的专栏signup_dateDateTime,值为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 sql-server-ce
7个回答
2
投票

SQL Server Compact没有日期类型。

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

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
投票

我尝试了这个和许多其他解决方案。我想要一个适用于任何LCID的通用解决方案。我的解决方案是一些复杂的代码,但它对我来说非常有用。这是一个预订系统,我需要找出谁在特定日期到达。 ArriveDate是专栏,d是我想要的日期。

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

0
投票

这将仅返回原始日期时间类型的日期值。所以你可以使用输出进行任何比较

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

0
投票

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

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

0
投票

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

CONVERT(date, Date_Updated, 120)

这段代码用mssql进行转换。第一项'date'是要返回的数据类型。它可以是'datetime','varchar'等。第二项'Date_Updated'是要转换的列的名称。最后一项'120'是要返回的日期样式。有各种样式,输入的代码将决定输出。 '120'代表YYYY-MM-DD。希望这可以帮助


-1
投票

要获取字符串值,请使用CONVERT

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

点击此处查看各种格式:

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

要获得DATE,并且只是删除时间,请执行此操作

Select Cast (signup_date as DATE)
© www.soinside.com 2019 - 2024. All rights reserved.