从datetime列提取日期 - SQL Server Compact

时间:2016-09-04 13:14:45

标签: sql sql-server-ce

我使用的是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)  

9 个答案:

答案 0 :(得分:2)

SQL Server Compact没有日期类型。

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

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

(这已经过测试,实际上对SQL Server Compact起作用)

答案 1 :(得分: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。)

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

{{1}}

答案 4 :(得分:0)

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

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

答案 5 :(得分:0)

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

CONVERT(date, Date_Updated, 120)

此代码使用mssql进行转换。第一项“日期”是要返回的数据类型。可能是“ datetime”,“ varchar”等。 第二项“ Date_Updated”是要转换的列的名称。 最后一项'120'是要返回的日期样式。样式多种多样,输入的代码将确定输出。 '120'代表YYYY-MM-DD。 希望这会有所帮助

答案 6 :(得分:0)

选择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

select convert(nvarchar,getdate(),6)= 25 Sep 19

select convert(nvarchar,getdate(),7)= 9月25日,19

选择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)= 09/25/2019

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

select convert(nvarchar,getdate(),103)= 25/09/2019

选择convert(nvarchar,getdate(),104)= 25.09.2019

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

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

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

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

选择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

select convert(nvarchar,getdate(),0)= 2019年9月25日1:50 PM

select convert(nvarchar,getdate(),9)= 2019年9月25日1:50:31:813PM

select convert(nvarchar,getdate(),13)= 25 Sep 2019 13:50:39:307

选择convert(nvarchar,getdate(),20)= 2019-09-25 13: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

select convert(nvarchar,getdate(),100)= 2019年9月25日1:51 PM

select convert(nvarchar,getdate(),109)= 2019年9月25日1:51:32:227PM

select 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

答案 7 :(得分:0)

使用这个,我遇到了同样的问题

SELECT CAST(data_registo as date) AS "signup_date"

答案 8 :(得分:-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)