我正在使用SQL Server Compact 4.0版本,虽然在谷歌中找到它似乎很简单,但我尝试过的例子都不起作用。
我的专栏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
函数,但这会迫使我连接值,这是正确的路径吗?如果是这样,我如何作为Y-m-d连接?
SELECT DATEPART(month, signup_date)
SQL Server Compact没有日期类型。
如果您不想查看时间,请将datetime值转换为字符串:
SELECT CONVERT(nvarchar(10), GETDATE(), 120)
(这已经过测试,实际上对SQL Server Compact有效)
在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。)
我尝试了这个和许多其他解决方案。我想要一个适用于任何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进行转换。第一项'date'是要返回的数据类型。它可以是'datetime','varchar'等。第二项'Date_Updated'是要转换的列的名称。最后一项'120'是要返回的日期样式。有各种样式,输入的代码将决定输出。 '120'代表YYYY-MM-DD。希望这可以帮助
要获取字符串值,请使用CONVERT
select convert(varchar(10), signup_date, 11)
点击此处查看各种格式:
https://msdn.microsoft.com/en-us/library/ms187928.aspx
要获得DATE,并且只是删除时间,请执行此操作
Select Cast (signup_date as DATE)