我正嘗試在SQL數據庫中使用datetime列來檢索行的人Start_Time date等於某個值。如何在SQL語句的WHERE子句內修剪?
這裏是我當前的SQL:
Select Job_Type
FROM Shift
WHERE Start_Time IN (SELECT DISTINCT CAST(Start_Time AS DATE) As Start_Time
FROM Shift)
喜歡的START_TIME列存儲這樣:26/05/2017 16時06分00秒
上面的子查詢返回的日期,如下所示:26/05/2017。
我希望外部SELECT語句檢索行Start_Time以相同的「日期」(26/05/2017)開頭,我現在想忽略時間方面。
目前,由於WHERE Start_Time
這段代碼,這是錯誤的。它目前沒有削減專欄的時間部分。
你們能告訴我如何刪除WHERE子句中的時間方面嗎?
CREATE TABLE [dbo].[Shift] (
[Shift_Id] INT IDENTITY (1, 1) NOT NULL,
[Start_Time] DATETIME NOT NULL,
[End_Time] DATETIME NOT NULL,
[Job_Type] NVARCHAR (50) NOT NULL,
[Employee_Id] INT NOT NULL,
[Available] INT NULL,
FOREIGN KEY ([Employee_Id]) REFERENCES [dbo].[Employee] ([Employee_Id]) ON DELETE CASCADE
);
另外,下面是我的全碼:
protected void repFullSchedule_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
using (SqlConnection con = new SqlConnection(connectionString))
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
Repeater jobRepeater = (Repeater)e.Item.FindControl("repJobs");
string Start_time = DataBinder.Eval(e.Item.DataItem, "Start_Time").ToString();
SqlCommand cmd = new SqlCommand("Select Job_Type FROM Shift WHERE cast(Start_Time as date) IN (SELECT DISTINCT CAST(Start_Time AS DATE) As Start_Time FROM Shift)", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
jobRepeater.DataSource = dt;
jobRepeater.DataBind();
}
}
}
我沒有得到查詢的結構。如果你做了你想要的,你將會在'shift'中返回所有的行。另外,「Start_Time」的類型是什麼?它是日期/時間還是字符串? –
'Start_Time'是一個日期時間。我已經發布了上面的其他代碼來試圖澄清這個問題。以上,_repFullSchedule_是一箇中繼器,以「Friday 26/05/2017」的形式顯示數據庫中每一行的'Start_Time'。然後在內部中繼器(jobRepeater)中,我想顯示與各種'Start_Time的' – user2911539