How to extract day of week from timestamp - sql-server

I am trying to extract the day of the week from a timestamp in SQL Server.
I am specifically looking for the SQL Server equivalent syntax to EXTRACT.
I want to count how many fields are in each day of the week.
This is how I would do it on BigQuery:
SELECT
EXTRACT(DAYOFWEEK FROM order_date ) as day,
count(*) count_trips
FROM `sales.orders`
group by EXTRACT (DAYOFWEEK FROM order_date)

Try this:
SELECT DATENAME(WEEKDAY, DATE(timestamp))
example:
SELECT DATENAME(WEEKDAY, '2022/05/08 18:50:30');
Output: Sunday
P.S.
I am helping you the day part only considering you know the rest of your code. Feel free to reply this for exact query.

Related

How to swap day and month SQL Server

I have a column called reading_date and it is defined as datetime. I have many records in it and I could figure out that there are many records where the day is in the month and the vise versa. For e.g 2019-05-01 which it should be 2019-01-05. is there any way to swap and fix such issue. I am using SQL Server.
Thanks in advance
Split dates using DATEPART function and gather them in another way using DATEFROMPARTS.
UPDATE yourtable
SET yourdate =
DATEFROMPARTS(
DATEPART(year, [yourdate]),
DATEPART(day, [yourdate]),
DATEPART(month, [yourdate]))
WHERE ...

microsoft SQL - returning previous week's data

I have a script that I refresh every week to get the sales data of the last week with the duration starting from last week's Sunday and ending with last week's Saturday. For example if I am running the script in any day within the week from 09/18/16 to 09/24/16, I want to get the sales data spanning from 09.11.16 to 09.17.16.
What script/syntax can I use to get this data if I want to refresh in any day of the current week to get the previous week's data?
Appreciate your time,
Thanks!
You can try the following
declare #date date = getdate()
select dateadd(wk,-1,dateadd(dd, -(datepart(dw, #date)-1), #date)) as [Start],
dateadd(wk,-1,dateadd(dd, 7-(datepart(dw, #date)), #date)) as [End]
Here a working demo
Hope this will help you

Syntax for SOQL Query - Dynamic Date

Very new to SOQL. Looking to write a query (to be used in Apex Data Loader) that pulls records with a CreatedDate <= 14 days ago. None of the predefined date options (LAST_N_DAYS, etc.) seem to cover what I'm looking for. I'm guessing/hoping there is something similar to DATEADD(D, -14, DATE()) that can dynamically calculate 14 days ago, so that the criteria would ultimately look like CreatedDate <= DATEADD(D, -14, DATE()).
Thanks in advance!
There isn't any Date Add. However looking at your criteria the LAST_N_DAYS builtin should do the trick for you
Lets say I want to select Data that is older than 14 days ago (including that day) I would do
Select Id, CreatedDate from Account where CreatedDate <= LAST_N_DAYS:14
if I need the opposite ie data created in the last 14 days
Select Id, CreatedDate from Account where CreatedDate >= LAST_N_DAYS:14

SSIS - Modify date column from the 15th to the 1st of the month

SELECT * FROM [MarkTSK]
WHERE [MonthlyDt] IS NOT NULL
--AND
--SELECT DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)
Hello folks. Does anyone know how to correctly write this statement to
display the FIRST of each month? I have an Excel file that I am importing
into a Server using MS SSIS (VisualStudio 2008). The dates are monthly, but the last few months were the 15th June, May, April etc. My intent is to make
all of them show 1st of the month. All the months before January 2015 have been on the 1st of the month.
The SQL Query above is what I wrote in the Excel source Editor.
Thank You
This should always give you the first of the current Month
SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,GETDATE()),0)
to pull back the first of the month for dates in your table something like this should do it
SELECT DATEADD(MONTH,DATEDIFF(MONTH,0,[MonthlyDt]),0) FROM [MarkTSK]
WHERE [MonthlyDt] IS NOT NULL
SELECT *, DATEADD('d',-DAY([MonthlyDT])+1, [Date]) AS [MonthD]
FROM [MarkTSK]
WHERE [MonthlyDT] IS NOT NULL
Thank you everyone. The SCRIPT above worked for me. All the dates that were not on the 1st of the month, now shows as the 1st.
Use DatePart to extract the Month and Year adding in the day manually.
Something like:
SELECT Convert(date, DatePart('yyyy', [MonthlyDt]) + DatePart('mm', [MonthlyDt]) + '01' ) FROM [MarkTSK]
WHERE [MarkTSK] IS NOT NULL
(Disclaimer: untested code)

Only filter my time in SQL Server where clause

I am new to SQL and Programming in general. I have a datetime field which I want to use to filter my results but only on the time portion.
For example I need to run a report from 2pm yesterday to 7am current day. I cannot hard code the dates because this report needs to run daily. This Query will run from a stored procedure automatically.
I have tried AND clm.createDtTm > DATEADD(d, -1, GETDATE()), which goes back one day but not the time range I need.
I tried this: AND (datepart(hh, '11:02:54.107') = 7)<--To be honest not even sure what I am doing here.
I am not sure if this is even possible, but if I can get results for one day back I am assuming there has to be a way to narrow that day between hours.
Any help would be appreciated.
Thanks,
Abdul
This should do the trick, it filters out rows that do not fall in the date interval, from 7pm yesterday to 7am today.
WHERE
createDtTm >= DATEADD(HOUR, 14,CAST(DATEADD(DAY,-1, CAST(GETDATE() AS DATE)) AS DATETIME))
AND createDtTm <= DATEADD(HOUR, 7, CAST(CAST(GETDATE() AS DATE) AS DATETIME))
I suggest something like this:
SELECT(DATEADD(d,-1,GETDATE()))
FROM table
WHERE (DATEADD(d,-1,GETDATE())) = rowloadtimestamp
HAVING DATEPART(HH,rowloadtimestamp) BETWEEN 13 AND 24
UNION
SELECT GETDATE()
FROM table
WHERE GETDATE() = rowloadtimestamp
HAVING DATEPART(HH,GETDATE()) BETWEEN 1 AND 7
Assuming you have a rowloadtimestamp field this should work for you.
What do you mean with „I can not hardcode the dates” ? Do you mean the time interval is variable, or is it fixed, or are you referring to the exact dates? I'm not sure I understand.
In case of MySQL you can do something like:
SELECT data, date FROM table WHERE date < DATE_SUB(NOW(), INTERVAL 2 DAY);
This Query will get you the last two days. You can vary the interval by replacing the „2” with a variable if that is possible in your case.

Resources