Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从SQL Server GETDATE()函数中删除Datetime中的日期_Sql_Sql Server_Date_Datetime - Fatal编程技术网

从SQL Server GETDATE()函数中删除Datetime中的日期

从SQL Server GETDATE()函数中删除Datetime中的日期,sql,sql-server,date,datetime,Sql,Sql Server,Date,Datetime,我正在进行一个查询,该查询将获取当前日期的记录,而不考虑时间,如何在SQL Server上进行查询?我的SQL Server版本不支持日期转换。我想要一种像这样的格式: 2013-06-20 例如,我的查询是: SELECT * FROM sometable where date = GETDATE(); 其中GETDATE()的格式为2015-06-19 19:12:10.953。 我希望它在查询中为2015-06-19 谢谢。请尝试以下内容 SELECT * FROM sometable

我正在进行一个查询,该查询将获取当前日期的记录,而不考虑时间,如何在SQL Server上进行查询?我的SQL Server版本不支持日期转换。我想要一种像这样的格式:

2013-06-20
例如,我的查询是:

SELECT * FROM sometable where date = GETDATE();
其中
GETDATE()
的格式为2015-06-19 19:12:10.953。 我希望它在查询中为2015-06-19

谢谢。

请尝试以下内容

SELECT * FROM sometable where DATEDIFF(DAY, date,GETDATE())=0;
谢谢

请尝试以下内容

SELECT * FROM sometable where DATEDIFF(DAY, date,GETDATE())=0;
谢谢

您可以将查询表示为:

SELECT *
FROM sometable 
WHERE date = cast(GETDATE() as date);
但是,另一种说法是:

SELECT *
FROM sometable 
WHERE date >= cast(GETDATE() as date) and
      date < cast(dateadd(day, 1, GETDATE()) as date)
选择*
从某处
其中日期>=cast(GETDATE()作为日期)和
日期
此版本更保证使用适当的索引(如果可用)。

您可以将查询表示为:

SELECT *
FROM sometable 
WHERE date = cast(GETDATE() as date);
但是,另一种说法是:

SELECT *
FROM sometable 
WHERE date >= cast(GETDATE() as date) and
      date < cast(dateadd(day, 1, GETDATE()) as date)
选择*
从某处
其中日期>=cast(GETDATE()作为日期)和
日期
此版本更保证使用适当的索引(如果可用)。

转换(VARCHAR,GETDATE(),120)
将日期转换为ISO格式,然后子字符串将只获得日期部分:

SELECT * 
FROM sometable 
WHERE date = SUBSTRING(CONVERT(VARCHAR, GETDATE(), 120), 1, 10)
CONVERT(VARCHAR,GETDATE(),120)
将日期转换为ISO格式,然后子字符串将只获得日期部分:

SELECT * 
FROM sometable 
WHERE date = SUBSTRING(CONVERT(VARCHAR, GETDATE(), 120), 1, 10)

您可以尝试使用CAST:like:

SELECT CAST(GETDATE() AS DATE) 

SELECT CAST(date AS DATE) FROM UserMaster where date = GETDATE();

您可以尝试使用CAST:like:

SELECT CAST(GETDATE() AS DATE) 

SELECT CAST(date AS DATE) FROM UserMaster where date = GETDATE();

由于您的sqlserver版本不支持日期转换(您必须使用SQLServer2005或更早版本),因此需要重新计算getdate()

这是将包括的时间间隔。不包括todate:

SELECT 
  dateadd(d, datediff(d,0, GETDATE()), 0) fromdate,
  dateadd(d, datediff(d,0, GETDATE()), 1) todate
结果:

fromdate                  todate
2015-06-19 00:00:00.000   2015-06-20 00:00:00.000

由于您的sqlserver版本不支持日期转换(您必须使用SQLServer2005或更早版本),因此需要重新计算getdate()

这是将包括的时间间隔。不包括todate:

SELECT 
  dateadd(d, datediff(d,0, GETDATE()), 0) fromdate,
  dateadd(d, datediff(d,0, GETDATE()), 1) todate
结果:

fromdate                  todate
2015-06-19 00:00:00.000   2015-06-20 00:00:00.000

您使用的是哪个版本的SQL Server?您的日期如何具有该格式?当您无法使用日期转换时,您将无法使用日期作为数据类型。您的列日期是否声明为字符(10)?您使用的是哪个版本的SQL Server?日期如何具有该格式?当您无法使用日期转换时,您将无法使用日期作为数据类型。您的列日期是否声明为字符(10)?我要补充的是,只有当日期列的类型为date或其时间部分为midnight时,第一个查询才会生成结果。谢谢。我希望我也能选择这个答案,我可以在将来使用这种技术,因为我也在进行“从日期”和“到日期”查询。ThanksI补充说,第一个查询只会在date列类型为date或其时间部分为midnight时生成结果。谢谢。我希望我也能选择这个答案,我可以在将来使用这种技术,因为我也在进行“从日期”和“到日期”查询。谢谢,尽管这会给出正确的结果。此解决方案不会很好地执行。它不允许索引,并且在比较时速度非常慢,尽管这将给出正确的结果。此解决方案不会很好地执行。它将不允许索引,并且在比较时会非常慢。谢谢,这对我有用。我只需要与我提到的格式和工作完美的日期。谢谢这个答案将日期转换为字符串,这是不必要的。只需使用
cast(getdate()as date)
删除时间组件就更好了您应该始终为您需要的任何
varchar
变量和参数提供长度use@gordonLinoff您的回答是正确的,但并非所有SQL Server版本中都存在
date
类型。谢谢您的帮助。我只需要与我提到的格式和工作完美的日期。谢谢这个答案将日期转换为字符串,这是不必要的。只需使用
cast(getdate()as date)
删除时间组件就更好了您应该始终为您需要的任何
varchar
变量和参数提供长度use@gordonLinoff您是正确的,但并非所有SQL Server版本中都存在
date
type。